我有一个矩阵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盘仍有250 GB。为什么会出现这个错误? 如何解决这个问题?
答案 0 :(得分:1)
您需要至少0.8(GB)才能将A
存储在内存中。如果您查看cov.m
,您会看到matlab正在计算协方差矩阵(我在下面使用您的变量名称)
Y = (A' * A) / size(A,1);
由于A
为2k x 50k,A' * A
将为50k x 50k,这需要20(GB)的内存。我猜你的机器没有那么多可用。您仍然可以计算协方差矩阵,但是您必须编写自己的函数来以块/块的形式计算它,并将结果存储到文件中而不是保留它。