どのようにPythonでloadmatを使用して.MATファイルからインポート構造体のアクセスフィールドへ?

StackOverflow https://stackoverflow.com/questions/1984714

質問

尋ねる(をと回答)後、この質問する .MATファイルを読み取る方法それは、scipyのダウンロードを使用してMATLABで作成された、私は、インポートされた構造体のフィールドにアクセスする方法を知りたい。

私は、構造体をインポートすることができ、そこから、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の

InpTgtLtrRelevant、私ができる方法:

問題は、私は構造体Gのメンバーにアクセスする方法であり、

役に立ちましたか?

解決

まず、私は可能であればscipyのダウンロード用のsvnにアップグレードすることをお勧めしたい - 。最近、いくつかの本当に劇的なスピードアップとMATLAB IOの積極的な開発が行われている。

としても、それはstruct_as_record=Trueと試みる価値があるかもしれません述べました。しかし、そうでなければ、対話形式で遊んでそれを得ることができる必要があります。

あなたのGは、MIO構造体オブジェクトの配列です - あなたは、たとえばG.shapeを確認することができます。この場合、私はG = x['G'][0,0]はあなたが欲しい物を与えるべきだと思います。その後、

G.Inpなどにアクセスすることができるはずです
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top