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和GO语言实现的消息摘要算法示例
Mar 10 Python
快速了解Python相对导入
Jan 12 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python二进制文件的转译详解
Jul 03 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
Python发送邮件封装实现过程详解
May 09 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python中selenium库的基本使用详解
Jul 31 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
如何开发一个虚拟域名系统
2006/10/09 PHP
php中的MVC模式运用技巧
2007/05/03 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
JavaScript Split()方法
2015/12/18 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
成品仓管员岗位职责
2013/12/11 职场文书
自荐信写法介绍
2014/01/25 职场文书
实习科室评语
2015/01/04 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers