我從基於代理的NetLogo仿真中獲得260 GB數據。數據已經以某種方式進行了準備,可以有效地用於可視化和分析。的數據當前分成.MAT文件,每個文件包含4維陣列,其中的在MATLAB中使用大型多維數組
270 x 2502 x 9 x 50
大小當加載,一個陣列使用2.26 GB的內存。這大約需要5秒鐘。總共有超過100個文件。到目前爲止,我的方法是遍歷.mat文件,使用load
,使用數據(例如繪製曲線),使用clearvars
並繼續下一個文件。
不用說,這是一個天真的方法,需要太多的時間。 datastore
不是一個選項,因爲我有4維數據和.mat文件。還有另一種更有效地處理這種情況的方法嗎?大多數時候,我只使用一小組這樣的陣列,例如一名維定:
A(:, :, 1, :)
['memmapfile'](https://uk.mathworks.com/help/matlab/ref/memmapfile.html)也許?儘管您仍然需要找到一種方法來創建文件,而不會耗盡內存。 – IKavanagh
如何將數據保存到原始二進制文件(而不是'mat'文件),然後您可以使用'fread'和'fseek'只讀取需要的部分。您可以編寫一個包裝來幫助您加載所需的維度。 –
看看hdf5文件格式,有時對大數據非常有用。 –