在MATLAB中使用大型多维数组

时间:2015-11-02 09:41:28

标签: matlab out-of-memory bigdata

我从基于代理的 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, :)

1 个答案:

答案 0 :(得分:2)

您可以使用matfile函数将matfile的子集加载到内存中,而无需加载整个文件。由于.mat是大多数目的的HDF5格式的子集,因此它们的使用(几乎)是等效的。但是由于matlab devs' madskills并且还取决于你的工作流程,它不能保证比现在你做的更快。