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(一)Python环境安装
Aug 20 Python
python如何实现反向迭代
Mar 20 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
Python利用递归实现文件的复制方法
Oct 27 Python
python程序变成软件的实操方法
Jun 24 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
Cython编译python为so 代码加密示例
Dec 23 Python
Python之Class&Object用法详解
Dec 25 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
python中time.ctime()实例用法
Feb 03 Python
python实现学生信息管理系统源码
Feb 22 Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
Python打包为exe详细教程
You might like
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
Smarty模板配置实例简析
2019/07/20 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
利用aardio给python编写图形界面
2017/08/21 Python
使用C++扩展Python的功能详解
2018/01/12 Python
pandas 将索引值相加的方法
2018/11/15 Python
python 创建一维的0向量实例
2019/12/02 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
python爬取音频下载的示例代码
2020/10/19 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
文秘应聘自荐书范文
2014/02/18 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
产品售后服务承诺书
2014/05/21 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
教师个人教学总结
2015/02/11 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
Sql Server之数据类型详解
2022/02/28 SQL Server