我對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