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编程中namedtuple类的用法
Jun 21 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Python 如何调试程序崩溃错误
Aug 03 Python
聊聊python中的循环遍历
Sep 07 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
Python学习开发之图形用户界面详解
Aug 23 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
Python读取图片属性信息的实现方法
2016/09/11 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
python标准库os库的函数介绍
2020/02/12 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
有兼职工作经历的简历自我评价
2014/03/07 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
公司会议开幕词
2016/03/03 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
浅谈Python中对象是如何被调用的
2022/04/06 Python