Python中如何打开.mat文件中的结构体数据?

用 data=scipy.io.loadmat(‘data.mat’)
data[‘a’]中数据是一个 matlab 的结构体。
我如何提取出 a.a1 的数据?
Python中如何打开.mat文件中的结构体数据?

1 回复

直接上代码,用 scipy.io.loadmat 配合 struct_as_record=False 参数就行。

import scipy.io

# 关键:设置 struct_as_record=False,让结构体变成可操作的numpy.void对象
mat_data = scipy.io.loadmat('your_file.mat', struct_as_record=False)

# 假设你的结构体在MATLAB中叫 'my_struct'
struct_data = mat_data['my_struct']

# 访问结构体字段,比如字段名为 'field1'
field1_data = struct_data['field1'][0, 0]  # 注意索引 [0,0] 来提取内容

print(field1_data)

核心解释: MATLAB的 .mat 文件里,结构体默认被加载成一个特殊的numpy数组(dtype=object)。设置 struct_as_record=False 后,它会被转换成 numpy.void 类型,这样你就可以像字典一样直接用字段名(比如 'field1')来访问数据了。注意后面那个 [0, 0] 索引,是因为MATLAB的数据在Python里经常被包装成2D数组,需要解包。

一句话建议:用 scipy.io.loadmat 并关掉 struct_as_record 就能直接操作。

回到顶部