是否可以在Python中读取二进制MATLAB .mat文件?

我看到SciPy声称支持读取.mat文件,但我没有成功。我安装了SciPy 0.7.0版本,但找不到loadmat()方法。


当前回答

需要导入,导入scipy.io…

import scipy.io
mat = scipy.io.loadmat('file.mat')

其他回答

安装了MATLAB 2014b或更新版本后,可以使用MATLAB for Python引擎:

import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)

有一个很好的包叫做mat4py,可以很容易地安装使用

pip install mat4py

使用起来很简单(来自网站):

从mat文件加载数据

函数loadmat只使用Python的dict和list对象,将mat文件中存储的所有变量加载到一个简单的Python数据结构中。数值数组和单元格数组转换为行顺序的嵌套列表。压缩数组以消除只有一个元素的数组。生成的数据结构由与JSON格式兼容的简单类型组成。

示例:将mat文件加载到Python数据结构中:

from mat4py import loadmat

data = loadmat('datafile.mat')

变量数据是mat文件中包含变量和值的字典。

将Python数据结构保存到mat文件中

使用savemat函数,可以将Python数据保存到mat文件中。数据必须以与loadmat相同的方式结构化,即它应该由简单的数据类型组成,如dict, list, str, int和float。

示例:将Python数据结构保存到mat文件中:

from mat4py import savemat

savemat('datafile.mat', data)

参数数据应与变量一致。

from os.path import dirname, join as pjoin
import scipy.io as sio
data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data')
mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat')
mat_contents = sio.loadmat(mat_fname)

你可以使用上面的代码来读取Python中默认保存的.mat文件。

首先将.mat文件保存为:

save('test.mat', '-v7')

之后,在Python中,使用常用的loadmat函数:

import scipy.io as sio
test = sio.loadmat('test.mat')

需要导入,导入scipy.io…

import scipy.io
mat = scipy.io.loadmat('file.mat')