Python 读写 Matlab Mat 格式数据的操作
程序员文章站
2022-03-24 09:53:06
1. 非 matlab v7.3 files 读写import scipy.io as sioimport numpy# matfile 读取matfile = 'matlabdata.mat'dat...
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中数据保存为matlab数据格式.mat
-
python数据分析学习(6)输入载入,存储及文件格式(1)文本格式数据的读写
-
详解如何在python中读写和存储matlab的数据文件(*.mat)
-
文件读写(matlab格式的数据和Excel表格)
-
Python 读写 Matlab Mat 格式数据的操作
-
python保存大型 .mat 数据文件报错超出 IO 限制的操作
-
python 读取MATLAB 产生的dat格式数据 绘制暗孤子传输3D图
-
Python自动化开发:循环次数控制、常用数据类型、字符串格式化、列表常用操作、列表的后续操作详细介绍
-
Python自动化开发:循环次数控制、常用数据类型、字符串格式化、列表常用操作、列表的后续操作详细介绍
-
OpenCV cv.Mat与.txt文件数据的读写操作