2

値が異なる長さのnumpy配列である辞書をマットファイルに保存して、共同作業者が辞書をセル配列としてMATLABにロードできるようにしようとしています。

入力の例:

 data={traces: {0: array([], dtype=float64), 1: array([], dtype=float64), 
 2: array([], dtype=float64), 3: array([], dtype=float64), 
 4: array([], dtype=float64), 5: array([], dtype=float64), 
 6: array([], dtype=float64), 7: array([], dtype=float64), 
 8: array([], dtype=float64), 9: array([], dtype=float64)}}

savemat('test.mat', mdict=data)

ただし、次のエラーが発生します。

 TypeError: Could not convert {0: array([], dtype=float64), 1: array([], dtype=float64), 
 2:array([], dtype=float64), 3: array([], dtype=float64), 4: array([], dtype=float64), 
 5:  array([], dtype=float64), 6: array([], dtype=float64), 7: array([], dtype=float64), 
 8: array([], dtype=float64), 9: array([], dtype=float64)} (type <type 'dict'>) to array

この辞書をマットファイルに保存するにはどうすればよいですか?

4

1 に答える 1

3

キー「トレース」と辞書の値で辞書を定義しています。「トレース」を削除し、キー値を int (0) または数値文字列 (「0」) の代わりに文字列に置き換え、通常どおり Python に保存します。

from scipy.io import savemat
from numpy import *

data={'t0': array([], dtype=float64), 't1': array([], dtype=float64), 
 't2': array([], dtype=float64), 't3': array([], dtype=float64), 
 't4': array([], dtype=float64), 't5': array([], dtype=float64), 
 't6': array([], dtype=float64), 't7': array([], dtype=float64), 
 't8': array([], dtype=float64), 't9': array([], dtype=float64)}

# print data
savemat('test.mat', data, oned_as='row')

次の方法で MATLAB に読み込むことができます。

traces = load('test.mat'); 
于 2012-09-24T20:19:00.570 に答える