这篇文章主要介绍了Python如何操作Matlab的Mat格式数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何操作Matlab的Mat格式数据文章都会有所收获,下面我们一起来看看吧。
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})
如果 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 h6py
with h6py.File('matlabdata.mat', 'r') as f:
f.keys() # matlabdata.mat 中的变量名
datas = h6py.File('matlabdata.mat')['matlabdata'].value
补充:【Matlab/Python】Matlab和Python之间的数据传输
很多时候,我们需要把matlab里的数据保存下来,然后用python来处理。
直接将matlab的数据存储成.mat格式,然后在python中利用scipy.io中的loadmat函数来读取
import scipy.io as sio
data = sio.loadmat(...)
当要存储的.mat文件比较大时,matlab中需要用save -v7.3才能存储。但是利用方法一在python中读取时,会不支持。可以用以下方法读取
with h6py.File("mydata.mat") as f:
data = f["mydata"][:]
可以正确读取数据,但是数组维度会倒过来,即本来是(2,3,4,5),读出来会是(5,4,3,2)
但是只有.mat数据用save -v7.3保存时,才能用此方法读取,否则,应用方法一读取
所以可以在matlab中将数据保存成.h6格式,统一按照方法二来读取
matlab中存储.h6格式用如下方法
h6create('data.h6','/data',[2,3,4,5]);
data = rand(2,3,4,5)
h6write('data.h6','/data',data)
但是用python读取时,矩阵维度仍然会倒过来
关于“Python如何操作Matlab的Mat格式数据”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python如何操作Matlab的Mat格式数据”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。