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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
Python 如何提高元组的可读性
Aug 26 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python with标签使用方法解析
Jan 17 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
python实现批量转换图片为黑白
Jun 16 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
python 如何读、写、解析CSV文件
Mar 03 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
服务器端解压缩zip的脚本
2006/12/22 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
jquery $.each()使用探讨
2013/09/23 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
python pandas模块基础学习详解
2019/07/03 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
python输入错误后删除的方法
2019/10/12 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
护士个人年度总结范文
2015/02/13 职场文书
通知函的格式
2015/04/27 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS