Python 读写 Matlab Mat 格式数据的操作


Posted in Python onMay 19, 2021

1. 非 matlab v7.3 files 读写

import scipy.io as sio
import numpy
# matFile 读取
matFile = 'matlabdata.mat'
datas = sio.loadmat(matFile)
# 加载 matFile 内的数据
# 假设 mat 内保存的变量为 matlabdata
matlabdata = datas['matlabdata']

# matFile 写入
save_matFile = 'save_matlabdata.mat'
save_matlabdata = np.array([1,2,3,4,5])
sio.savemat(save_matFile, {'array':save_matlabdata})

2. matlab v7.3 files 读取

如果 matlab 保存 data 时,采用的是 ‘-v7.3',scipy.io.loadmat函数加载数据会出现错误:

File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 64, in mat_reader_factory
raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files

可以采用:

import h5py
with h5py.File('matlabdata.mat', 'r') as f:
    f.keys() # matlabdata.mat 中的变量名
datas = h5py.File('matlabdata.mat')['matlabdata'].value

补充:【Matlab/Python】Matlab和Python之间的数据传输

很多时候,我们需要把matlab里的数据保存下来,然后用python来处理。

方法一(.mat格式)

直接将matlab的数据存储成.mat格式,然后在python中利用scipy.io中的loadmat函数来读取

import scipy.io     as sio
data = sio.loadmat(...)

方法二(.h5格式)

当要存储的.mat文件比较大时,matlab中需要用save -v7.3才能存储。但是利用方法一在python中读取时,会不支持。可以用以下方法读取

with h5py.File("mydata.mat") as f:
    data = f["mydata"][:]

可以正确读取数据,但是数组维度会倒过来,即本来是(2,3,4,5),读出来会是(5,4,3,2)

但是只有.mat数据用save -v7.3保存时,才能用此方法读取,否则,应用方法一读取

所以可以在matlab中将数据保存成.h5格式,统一按照方法二来读取

matlab中存储.h5格式用如下方法

h5create('data.h5','/data',[2,3,4,5]);
data = rand(2,3,4,5)
h5write('data.h5','/data',data)

但是用python读取时,矩阵维度仍然会倒过来

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取当前运行函数名称的方法实例代码
Apr 06 Python
浅谈Django的缓存机制
Aug 23 Python
django项目搭建与Session使用详解
Oct 10 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
Python for循环与range函数的使用详解
Mar 23 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
使用Python+Appuim 清理微信的方法
Jan 26 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
javascript 对象的定义方法
2007/01/10 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
如何利用python读取micaps文件详解
2020/10/18 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
感恩教育月活动总结
2014/07/07 职场文书
房屋产权证明书
2014/10/15 职场文书
单位婚育证明范本
2014/11/21 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
秦兵马俑导游词
2015/02/02 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Go 语言结构实例分析
2021/07/04 Golang
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers