我从基于代理的 NetLogo 模拟中获得了260 GB的数据。数据已经以某种方式准备好,可以有效地用于可视化和分析。数据当前被分成.mat文件,每个文件包含一个大小为
的4维数组270 x 2502 x 9 x 50
加载时,一个阵列使用2.26 GB的内存。这大约需要5秒钟。总共有100多个文件。到目前为止,我的方法是循环遍历.mat文件,使用load
,使用数据(例如绘制曲线),使用clearvars
并继续下一个文件。
毋庸置疑,这是一种花费太多时间的天真方法。 datastore
不是一个选项,因为我有4维数据和.mat文件。还有另一种方法可以更有效地处理这种情况吗?大多数时候我只使用一小组这些数组,例如一维固定:
A(:, :, 1, :)
答案 0 :(得分:2)
您可以使用matfile函数将matfile的子集加载到内存中,而无需加载整个文件。由于.mat是大多数目的的HDF5格式的子集,因此它们的使用(几乎)是等效的。但是由于matlab devs' madskills并且还取决于你的工作流程,它不能保证比现在你做的更快。