matlab内存最终解决方案

时间:2014-02-14 15:39:30

标签: matlab out-of-memory mat-file

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

例如,您可以获取数据,按比例缩小= 4,然后您将获得2.5GB的数据。你可以走得更远,但会增加错误。处理完毕后,您可以使用不同的技术对数据进行上采样(Matlab具有所有内置功能)。很抱歉,我不知道您的数据类型,所以如果我的答案与您的问题不符,抱歉。