MATLAB"内存不足"元素乘法的错误

时间:2014-10-20 15:16:58

标签: matlab out-of-memory

我在MATLAB中使用元素乘法,其中我拥有的最大矩阵是120x50矩阵。在下面的代码中,weight_N_120{i,1}{j,1}是一个单元格,i单元格包含10000个其他单元格。在这10000个单元格的每一个中,我有一个矩阵,其尺寸为120 iind_ExRet_N{i,1}{j,1}也是如此。

 for i = 2:50
        for j = 1:10000
        weight_ExRet_NS{i,1}{j,1} = weight_N_120{i,1}{j,1}.*ind_ExRet_N{i,1}{j,1};
        end
        i
 end

当我运行时,我收到错误:

{Error using .*
Out of memory. Type HELP MEMORY for your options.

Error in PCA (line 26)
    weight_ExRet_NS{i,1}{j,1} = weight_N_120{i,1}{j,1}.*ind_ExRet_N{i,1}{j,1};

Error in run (line 64)
evalin('caller', [script ';']);
}

我意识到它在i = 30时停止运行,所以这意味着没有足够的内存用两个120乘30的矩阵进行元素乘法运算。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我试图估计({mavices in} weight_ExRet_NS的预期内存消耗。如果所有矩阵都是120x50(类型double),这是一个轻微的低估(由于单元格):

<强> 120 * 50 * 50 * 10000 *一千○二十四分之八/ 1024 = 22888

答案是在Mb。认为你还有2个单元格数组,它们的大小应该相似。我认为你已经达到极限。看起来像一个桶,最后填满了倒。你需要做的是考虑你是否需要所有这些数据和精确度。如果仍然如此,那么你应该将其分块并独立使用它。如果可以动态擦除(或覆盖)某些数据,您也应该这样做。