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 就能直接操作。

