【发布时间】:2016-02-17 11:00:44
【问题描述】:
我正在使用 Matlab 中的计算量非常大的代码。它需要使用优化技术和使用非常大的矩阵进行长时间计算。
我遇到以下问题:即使代码运行正确,在代码所需的迭代结束时,Matlab 也没有存储我拥有的最大单元数组。我猜这是由于我的代码或我的计算机(可能不够强大)中的一些内存效率低下。但是,我遵循了 Matlab 文档中的所有一般性建议,但它仍然无法正常工作。
使用 evalc,我设法为代码的每次迭代保存了一个不同的变量,以便在循环结束时重新创建原始矩阵。但是,使用:
- evalc(strcat('var_', mat2str(i), '=varTmp'));
- evalc(strcat('save(var_', mat2str(i), '-append)'));
- 清除变量*
.. 以这种方式运行,但它仍然很慢,而且不是很“干净整洁”。
有没有办法以更好的方式做同样的事情(考虑到我必须对具有不同名称和维度的几个变量做同样的事情)或者更新 .mat 文件中的单元格数组添加一列(行或其他)没有加载它?
谢谢
【问题讨论】:
-
我很想避免它,有什么想法吗?
-
在前面的陈述中不那么强烈:使用
eval几乎总是一个坏主意。链接的帖子向您展示了原因:效率低下,代码可读性差,并且可能很危险。在这种情况下,您可以完全避免eval,请参阅 Daniel 的回答。