我对matlab和python很新,需要在matlab单元格数组中使用python中的一些值。matlab to python:获取matlab单元格数组值
我有一个整数单元阵列,经过我执行这行代码,并打印出结果,我得到这个:
a = loadmat('file.mat')
print a
{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Sep 21 15:30:15 2011', 'juncForward_c': array([[ [[ [[ ([[30]], **[[91], [87]]**, [[3]], [[2.2455372690184494, 3.6052402625905993, 5.5884470309828833]], [[14.0, 4.0, 15.4]], [[-1, -1, 2]], [[91, 89, 93], [88, 85, 86]], [[500, 500, 5]], [[1, 2, 3]], [[11.133333333333333]], **[[4]]**, [[1]], [[1]], [[1.0], [20.365168528421695]])]]
[[ ([[30]], **[[99], [80]]**, [[3]], [[4.0376480381611373, 2.3561944901923448, 6.0857897473297058]], [[10.0, 15.4, 16.600000000000001]], [[-1, 1, 3]], [[98, 98, 100], [79, 81, 80]], [[500, 6, 33]], [[1, 2, 3]], **[[14]]**, [[2]], [[1]], [[1]], [[2.0], [6.6573267908372973]])]]
和打印出来继续上。
有人可以向我解释单元格阵列的排列方式吗? (所以多少维度是上面?)
然后我有几个问题: 1) 在这个单元阵列,还存在变数“标签”,并分配给一个数组/细胞“坐标”(我不知道哪个是实际使用的术语) - 粗体值。我想用Python编写来访问这个值。我应该怎么做呢?
2) 为了测试,我试过了 - >juncInfoF = a.get('juncForward_c')
,当我尝试打印juncInfoF时,它打印出'None'。为什么?我很困惑,因为以前当我试过这个,它的工作原理。我甚至可以这样做 - >print juncInfo[0][9][0][0]
。但现在我甚至无法做到上述任何一项。
嘿remi!非常感谢您的回答! 我也想问一下,如果字典会以任何方式保存原始的mat文件存储结构。因为根据将mat文件编码出来的人,她告诉我matfile中的值是根据特定的结构存储的。因此可以使用a.label来获取标签值。 我可以做到这一点使用python后,我已经加载.mat文件数据到python使用上面的方法?因为我实际上尝试过键入a.label,但它不允许我这样做。 – user974666
你可以创建你自己的类,并根据加载的字典中的键来分配它的属性值。你有没有尝试过帮助(loadmat)?看起来struct_as_record关键字可以让你感兴趣。否则,发布一个.mat文件的例子。 – Remi
当我使用scipy.io.loadmat('file.mat')时返回的字典键是('_version _','1.0'),('_header _','MATLAB 5.0 ....'),('juncForward_c' ,array([[[[30.0],[[91.0],[87.0]],[[3.0]],[[2.2454534533.785785,5.4354]],...)]]等) dtype = object)),那么我如何获得ndarray中的属性作为它们的键值返回:juncForward_c?是否可以这样我不能加载.mat文件? – user974666