簡単な質問ですが、頭を一周することができないようです。scipy.io
ライブラリを使用して、Python辞書をMatlab構造体として保存しています。これで、ライブラリのドキュメントに、scipy.io
単一のPython辞書から単一のMatlab Structにこれを行う方法が示されています。
>>> a_dict = {'field1': 0.5, 'field2': 'a string'}
>>> sio.savemat('saved_struct.mat', {'a_dict': a_dict})
これは十分に公平に聞こえ、動作します:
しかし、私は今、複数のPython辞書に対して同じことをしたいと思います。それらをMatlab構造体に変換して、列名がすべてのディクショナリのキー(明らかにすべて同じキー名です)に等しくなり、各行がいずれかのキーの値を表すようにします辞書。これが正しく表示される場合、これは10フィールドの1 x K構造体と呼ばれ、Kはマップする行(Python辞書)の量です。以下に示す例:
私自身はMatlabの正しい用語にまったく気づいていませんが、コメントの優れた人は、これは構造体配列と呼ばれることになっていると私に言いました。私は単純にPython辞書の派手な配列を作成a_dict
し、それを上記のコード例のキーと値のペアに入れて保存しましたが、成功しませんでした。これを行うと、行が個々の構造体の値を表す1つの大きな構造体ではなく、すべての異なる構造体のリストが生成されます。
そのため、私はまだこの問題の適切な解決策を模索しています。追加の詳細が必要な場合は、コメントでお気軽にお問い合わせください。助けてくれてありがとう!
これが解決策です:
Pythonの場合:
>>> a_dict = {'field1': 0.5, 'field2': 'a string'}
>>> b_dict = {'field1': 1, 'field2': 'another string'}
>>> sio.savemat('saved_struct.mat', {'dict_array':[a_dict,b_dict]})
MATLABの場合:
s = load('saved_struct.mat');
struct_array = [s.dict_array{:}];
必要に応じて、MATLABの構造体配列になります。
struct_array =
1×2 struct array with fields:
field1
field2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加