无法将dict保存到mat文件中

时间:2012-09-24 19:49:00

标签: python matlab numpy io scipy

我正在尝试将值为n个不同长度的数组的字典保存到mat文件中,以便协作者可以将字典作为单元格数组加载到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

如何将此词典保存到mat文件?

1 个答案:

答案 0 :(得分:1)

您正在定义一个包含键“trace”和字典值的字典。删除'trace',用字符串而不是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'); 
相关问题