读取 mat 文件

日期2017-07-31(最后修改),2008-04-02(创建)

以下是如何从名为“test.mat”的 mat 文件中读取两个变量 latlon 的示例。

= Matlab 7.1 之前的版本 = 使用 scipy.io 中的 mio 模块可以读取使用 Matlab 7.1 之前的版本创建的 mat 文件。支持读取结构(和结构数组),元素使用与 Matlab 相同的语法访问:读取名为 struct 的结构后,其 lat 元素可以通过 struct.lat 获取,或者如果元素名称来自字符串,则可以通过 struct.__getattribute__('lat') 获取。

In [ ]
#!python
#!/usr/bin/env python
from scipy.io import loadmat
x = loadmat('test.mat')
lon = x['lon']
lat = x['lat']
# one-liner to read a single variable
lon = loadmat('test.mat')['lon']

Matlab 7.3 及更高版本

从 Matlab 7.3 版本开始,mat 文件默认情况下实际上使用 HDF5 格式保存(除非您在保存时使用 -vX 标志,请参见 Matlab)。可以使用例如 PyTablesh5py 包在 Python 中读取这些文件。目前似乎不支持在 mat 文件中读取 Matlab 结构。

In [ ]
#!python
#!/usr/bin/env python
import tables
file = tables.openFile('test.mat')
lon = file.root.lon[:]
lat = file.root.lat[:]
# Alternate syntax if the variable name is in a string
varname = 'lon'
lon = file.getNode('/' + varname)[:]

章节作者:Unknown[16],DavidPowell,srvanrell