Python之读写 Matlab Mat 格式数据操作的解决办法

内容摘要
这篇文章主要为大家详细介绍了Python之读写 Matlab Mat 格式数据操作的简单示例,具有一定的参考价值,可以用来参考一下。
文章正文

这篇文章主要为大家详细介绍了Python之读写 Matlab Mat 格式数据操作的简单示例,具有一定的参考价值,可以用来参考一下。

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})

Python 读写 Matlab Mat 格式数据的操作

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_factoryraise 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

Python 读写 Matlab Mat 格式数据的操作

 

补充:【Matlab/Python】Matlab和Python之间的数据传输

 

很多时候,我们需要把matlab里的数据保存下来,然后用python来处理。

方法一(.mat格式)

直接将matlab的数据存储成.mat格式,然后在python中利用scipy.io中的loadmat函数来读取

代码如下:


import scipy.io     as sio
data = sio.loadmat(...)

Python 读写 Matlab Mat 格式数据的操作

方法二(.h5格式)

当要存储的.mat文件比较大时,matlab中需要用save -v7.3才能存储。但是利用方法一在python中读取时,会不支持。可以用以下方法读取

代码如下:


with h5py.File("mydata.mat") as f:
    data = f["mydata"][:]

Python 读写 Matlab Mat 格式数据的操作

可以正确读取数据,但是数组维度会倒过来,即本来是(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 读写 Matlab Mat 格式数据的操作

但是用python读取时,矩阵维度仍然会倒过来

以上为个人经验,希望能给大家一个参考,也希望大家多多支持php教程。

注:关于Python之读写 Matlab Mat 格式数据操作的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!