我在MATLAB中使用元素明智的乘法,因此我擁有的最大矩陣是120x50矩陣。在下面的代碼中,weight_N_120{i,1}{j,1}
是一個單元格,其中i
th單元格包含10000個其他單元格。在這10000個單元的每一箇中,我有一個由i
尺寸爲120的矩陣。 ind_ExRet_N{i,1}{j,1}
也是如此。MATLAB「內存不足」錯誤元素明智乘法
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 2矩陣。我該如何解決這個問題?
問題可能是您生產的數據量。什麼是你的RAM內存?此外,如果你想浪費記憶,將矩陣存儲在單元陣列中是最好的選擇。由於您的單元格的所有元素都是雙重的,因此將它們存儲在單元格中是沒有意義的。嘗試一個結構。 – gire 2014-10-20 15:20:49
是的,它可能發生,你只是產生大量的數據。而不是創建一個新的變量「weight_ExRet_NS」,替換「weight_N_120」。 – ASantosRibeiro 2014-10-20 15:23:06
@gire我在40GB內存的網格上運行它。我是MATLAB新手,如何編輯它以創建一個結構而不是單元格?謝謝。 – TrueTears 2014-10-20 15:23:08