在python中的结构中导入matlab结构

时间:2016-04-14 17:51:14

标签: python matlab scipy python-import matlab-struct

我有MATLAB数据文件,其中包含我要导入到python中的struct中的多个结构。在MATLAB中,如果main_struct是主文件,我可以通过以下方式获取所需的数据 -

leaf1 = main_struct.tree1.leaf1

leaf2 = main_struct.tree1.leaf2

等等。现在我想在python中导入包含struct的.mat文件并访问leaf1leaf2。在python中,我可以加载mat文件 -

import scipy.io as sio

data = sio.loadmat("main_struct.mat",squeeze_me=True, struct_as_record=False);
tree1 = data.['tree1'];

如何访问tree1中的第二个结构?

1 个答案:

答案 0 :(得分:3)

如果在MATLAB中你有以下

S = struct('tree1', struct('leaf1', {1}, 'leaf2', {2}));
save('filename.mat', '-struct', 'S')

如果loadmatstruct_as_record = False一起使用,则data['tree1']的结果是scipy.io.matlab.mio5_params.mat_struct对象,可用于访问嵌套结构。

您可以通过以下方式访问基础数据:

from scipy.io import loadmat

data = loadmat('filename.mat', squeeze_me=True, struct_as_record=False)

leaf1 = data['tree1'].leaf1
# 1

leaf2 = data['tree1'].leaf2
# 2