我正在Matlab中使用非常計算的擴展代碼。它需要使用優化技術和使用非常大矩陣的長計算。Matlab中的內存問題:.mat中的更新變量
我遇到了以下問題:即使代碼正確運行,在代碼所需的迭代結束時,Matlab也不會存儲我擁有的最大單元陣列。我想這是由於我的代碼或計算機中的某些內存效率低下(這可能不夠強大)。但是,我遵循Matlab文檔中的所有一般建議,但仍然無法正常工作。
使用evalc,我設法爲每次迭代的代碼保存一個不同的變量,以便在循環結束時重新創建原始矩陣。然而,使用:
- evalc(strcat('var_',mat2str(i),'= varTmp'));
- evalc(strcat('save(var_',mat2str(i),'--append)'));
- 明確VAR *
。在這種方式中,工作,但它仍然緩慢,不是很「乾淨整潔」。
有沒有辦法以更好的方式做同樣的事情(考慮到我必須對具有不同名稱和維度的多個變量做同樣的事情),或者更新.mat文件中的單元格數組,添加一個列(行或其他)沒有加載它?
感謝
[不要使用'eval'。永遠。](http://stackoverflow.com/questions/32467029/how-to-put-these-images-together/32467170#32467170) – Adriaan
我很想避免它,任何想法做它? – merch
在前面的陳述中不那麼強烈:使用'eval'幾乎總是一個糟糕的主意。鏈接的帖子告訴你爲什麼:效率不好,代碼可讀性差,可能危險。在這種情況下,您可以完全避免使用「eval」,請參閱Daniel的答案。 – Adriaan