2016-04-14 25 views
-1

私はPythonにインポートしたい構造体内に複数の構造体を含むMATLABデータファイルを持っています。その上Pythonの構造体内にmatlab構造体をインポートする

leaf1 = main_struct.tree1.leaf1 

leaf2 = main_struct.tree1.leaf2 

と - main_structがメインのファイルであれば、MATLABで、私はで私が必要とするデータに取り掛かることができます。今度は、structを含む.matファイルをPythonでインポートし、leaf1leaf2にアクセスしたいと思います。私はtree1における第二の構造体にアクセスするにはどうすればよい

import scipy.io as sio 

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

- Pythonで、私はマットファイルを読み込むことができますか?

+0

はPythonで便利な機能のカップルが( 'タイプです)' - オブジェクトの種類をお持ち(dictの、リスト、などがわかりますどの)と 'dir()' - 組み込みとユーザ定義の両方の属性を表示します。これらの2つの機能は、インポートしたオブジェクトを「探索」して逆参照する方法を正確に把握するのに役立ちます。 – gariepy

+0

また、 'tree = data ['tree1']'( 'data'と' [')の間にドットはありません。 – gariepy

答えて

2

あなたはstruct_as_record = Falseloadmatを使用している場合は、

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

次ているMATLABでの場合は、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 
関連する問題