Nat*_*man 7 python file-io matlab scipy mat-file
按照这个问题(并回答)如何读取使用Scipy在Matlab中创建的.mat文件,我想知道如何访问导入结构中的字段.
我在Matlab中有一个文件,我可以从中导入一个结构:
>> load bla % imports a struct called G
>> G
G =
Inp: [40x40x2016 uint8]
Tgt: [8x2016 double]
Ltr: [1x2016 double]
Relevant: [1 2 3 4 5 6 7 8]
Run Code Online (Sandbox Code Playgroud)
现在我想在Python中做同样的事情:
x = scipy.io.loadmat('bla.mat')
>>> x
{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Jun 07 21:17:24 2006', 'G': array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object), '__globals__': []}
>>> x['G']
array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object)
>>> G = x['G']
>>> G
array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我怎么能访问结构G的成员:Inp,Tgt,Ltr和Relevant,在Matlab的方式,我可以吗?
首先,如果可能的话,我建议升级到Scipy svn - 最近有一些非常引人注目的速度提升了matlab io的积极开发.
同样如上所述,它可能值得尝试struct_as_record=True.但是否则你应该能够通过互动游戏来解决它.
你的G是一个mio struct对象的数组 - 你可以检查一下G.shape.在这种情况下,我认为G = x['G'][0,0]应该给你想要的对象.然后你应该能够访问G.Inp等.