2014-12-11 222 views
0

我有一個三維矩陣稱爲「Shanto」的大小(232,232,3052)。Matlab三維矩陣MemMapFile

我想內存映射這一點,和我使用下面的命令:

fileID = fopen('Shanto.dat','w'); 

fwrite(fileID, Shanto, 'single'); 

fclose(fileID) 

m = memmapfile('Shanto.dat') 

然而,當我嘗試訪問m.Data,我給予657083392 X 1 UINT8數組。

我該怎麼做才能保留原始矩陣的(232,232,3052)形狀?

感謝,

回答

1

當加載您.dat文件,你可以指定形狀/格式(默認爲UINT8實際上)。 您還需要使用fwrite來指定正確的數據格式:

fileID = fopen('Shanto.dat','w'); 

fwrite(fileID, Shanto, 'uint8'); %// Instead of 'single' as before. 

fclose(fileID) 

m = memmapfile('Shanto.dat','Format',{'uint8',[232 232 3052],'MyFancyName'}) 

然後,您可以訪問使用m.Data.MyFancyName

更多信息here

+0

我想你的建議相應的3D陣列,但我得到這個錯誤: 數據字段上的下標操作嘗試創建一個 逗號分隔列表。下標時,memmapfile類不支持逗號分隔列表的使用 。 對此有何建議? 感謝的人 本 – BenTam64 2014-12-11 03:01:45

+1

糟糕我忘了提及,當使用fwrite時,你還需要指定uint8格式。我編輯了我的答案;這應該現在工作。 – 2014-12-11 13:48:56

+0

非常感謝您的幫助Benoit! 非常感謝。 解決了! – BenTam64 2014-12-12 00:30:54