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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
vscode 远程调试python的方法
Dec 01 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
关于python2 csv写入空白行的问题
Jun 22 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
Python常见数据类型转换操作示例
May 08 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
python实现与redis交互操作详解
Apr 21 Python
python logging通过json文件配置的步骤
Apr 27 Python
使用python创建生成动态链接库dll的方法
May 09 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
CSS常用网站布局实例
2008/04/03 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python解决八皇后问题示例
2018/04/22 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
企业给企业的表扬信
2014/01/13 职场文书
会议主持词
2014/03/17 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python