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实现html转ubb代码(html2ubb)
Jul 03 Python
Python版微信红包分配算法
May 04 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
python3下实现搜狗AI API的代码示例
Apr 10 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
python实现多进程代码示例
Oct 31 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
Python 绘制可视化折线图
Jul 22 Python
Python二元算术运算常用方法解析
Sep 15 Python
python opencv通过4坐标剪裁图片
Jun 05 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php判断表是否存在的方法
2015/06/18 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
python的id()函数介绍
2013/02/10 Python
Python AES加密模块用法分析
2017/05/22 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
python pandas修改列属性的方法详解
2018/06/09 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
一些Unix笔试题和面试题
2012/09/25 面试题
党支部书记先进事迹
2014/01/17 职场文书
水利学院求职自荐书
2014/02/01 职场文书
倡议书格式
2014/08/30 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
捐助感谢信
2015/01/22 职场文书
水电施工员岗位职责
2015/04/11 职场文书
车辆管理制度范本
2015/08/05 职场文书