MATLAB 内存不足的最终解决方案



我有一个非常大的文件,大约 10GB。我无法将其加载到内存中,因此我设法将其传输到 .mat 文件。但是当我尝试集群时,仍然会出现"内存不足"问题。我认为它的最终解决方案是将这些内存的东西放到磁盘上。但是我需要从 matlab 调用 kmeans() 方法。有没有办法在不重写方法的情况下将 kmeans 中的局部变量也放入磁盘?

您需要一种处理大型数据集的策略。可能性是:

  1. 使用具有足够内存的系统
  2. 降低数据集的精度。对于聚类,小错误和缩放并不重要,如果可能,请将属性更改为缩放的 uint8 或 uint16。(显然,删除所有不相关的数据)
  3. 使用更合适的算法。我不是这个领域的专家,但CLARA和CLARANS是两种选择。这些算法不需要只包含一部分数据,应该可以与 matfile 结合使用,以仅将相关部分保留在内存中。

当您加载数据时,它会首先加载到计算机的 RAM 内存中,因此我认为解决您问题的唯一最终解决方案是拥有 16GB 的 RAM。

如果数据不是高度非线性的,您可能可以尝试对数据进行下采样。如果您有兴趣,可以阅读参考 http://www.mathworks.com/help/signal/ref/downsample.html

例如,您可以获取数据,按比例 = 4 进行缩减采样,然后您将拥有 2.5GB 的数据。您可以走得更远,但它会增加错误。处理后,您可以使用不同的技术对数据进行上采样(Matlab 内置所有功能)。 不幸的是,我不知道您的数据类型,因此,如果我的答案与您的问题不匹配,对不起。

最新更新