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选择排序算法的实现代码
Nov 21 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
Django 配置多站点多域名的实现步骤
May 17 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
Django 路由层URLconf的实现
Dec 30 Python
pandas统计重复值次数的方法实现
Feb 20 Python
OpenCV 图像梯度的实现方法
Jul 25 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
php实现的二分查找算法示例
2017/06/20 PHP
php二维码生成以及下载实现
2017/09/28 PHP
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python多线程实例教程
2014/09/06 Python
深入解析Python中的上下文管理器
2016/06/28 Python
Python协程的用法和例子详解
2017/09/09 Python
Python之web模板应用
2017/12/26 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python的中异常处理机制
2018/08/30 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
Django中使用Celery的方法步骤
2020/12/07 Python
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
房屋出售协议书
2014/04/10 职场文书
超市客服工作职责
2014/06/11 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js