8

这个询问(并回答)如何读取使用 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]

现在我想在 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)

问题是,我怎样才能像在 Matlab 中那样访问 struct G: InpTgt和的成员?LtrRelevant

4

1 回答 1

6

首先,如果可能的话,我建议升级到 Scipy svn - matlab io 一直在积极开发,最近有一些非常显着的加速。

另外如前所述,它可能值得一试struct_as_record=True。但除此之外,您应该能够通过交互式玩耍来解决它。

您的 G 是一组 mio 结构对象 - 例如,您可以检查G.shape。在这种情况下,我认为G = x['G'][0,0]应该给你想要的对象。然后你应该能够访问G.Inp等。

于 2010-01-01T23:40:56.297 回答