我正在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