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时间处理方法(详解)
Aug 14 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
python实现局域网内实时通信代码
Dec 22 Python
python实现批量修改文件名
Mar 23 Python
Django CBV模型源码运行流程详解
Aug 17 Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 Python
Python脚本调试工具安装过程
Jan 11 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
基于php判断客户端类型
2016/10/14 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
煤矿班组长岗位职责
2013/12/29 职场文书
学生出入校管理制度
2014/01/16 职场文书
村容村貌整治方案
2014/05/21 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
windows安装python超详细图文教程
2021/05/21 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android