如何解决内存不足的问题?

How to fix the out of memory issue?

我有一个矩阵A,它的大小是2000*50000 double。我想计算 矩阵 A 的协方差矩阵,所以我使用这个 Matlab 命令:

Y = cov(A)

但是弹出错误:

Out of memory. Type HELP MEMORY for your
options.
Error in test_2 (line 31)
Y = cov(A)

我的D盘还有250GB。为什么会出现这个错误? 如何解决这个问题?

您至少需要 0.8(GB) 才能在内存中存储 A。如果你查看 cov.m,你会看到 matlab 正在计算协方差矩阵(我在下面使用你的变量名)

Y = (A' * A) / size(A,1);

由于 A 是 2k x 50k,A' * A 将是 50k x 50k,这需要 20(GB) 的内存。我猜你的机器没有那么多可用的。您仍然可以计算协方差矩阵,但您必须编写自己的函数来计算它 blocks/pieces 并将结果存储到文件而不是保留在内存中。