我正在使用Matlab中的计算扩展代码。它需要使用优化技术和使用非常大的矩阵进行长计算。
我遇到了以下问题:即使代码运行正常,在代码所需的迭代结束时,Matlab也没有存储我拥有的最大的单元阵列。我想这是由于我的代码或我的计算机(可能不够强大)的内存效率低下。但是,我遵循了Matlab文档中的所有一般性建议,但它仍然无效。
使用evalc,我设法为每次迭代代码保存一个不同的变量,以便在循环结束时重新创建原始矩阵。但是,使用:
..以这种方式它正在工作,但它仍然缓慢而且不是很干净整洁"。
有没有办法以更好的方式做同样的事情(考虑到我必须对具有不同名称和维度的几个变量做同样的事情)或者更新.mat文件中的单元格数组添加列(行或其他)没有加载它?
谢谢
答案 0 :(得分:3)
使用matfile
,它允许您编写和读取mat文件的一部分而无需将其读入内存。一个小小的示范:
%initialize matfile
data=matfile('example.mat','writable',true)
n=10
%preallocate cell
data.list=cell(n,1)
for ix=1:n
%do some stuff
var=foo(n)
%store the results
data.list(3,1)={var}
end
行data.list(3,1)={var}
看起来有点奇怪,因为matfile
在编制索引时有一定的局限性,但它的含义是"意思是"是data.list{3}=var
。