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 でできるように、構造体 G: InpTgtLtrおよびのメンバーにアクセスするにはどうすればよいかということです。Relevant

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 に答える