Matlab的内存问题:.mat

时间:2016-02-17 11:00:44

标签: matlab memory mat-file

我正在使用Matlab中的计算扩展代码。它需要使用优化技术和使用非常大的矩阵进行长计算。

我遇到了以下问题:即使代码运行正常,在代码所需的迭代结束时,Matlab也没有存储我拥有的最大的单元阵列。我想这是由于我的代码或我的计算机(可能不够强大)的内存效率低下。但是,我遵循了Matlab文档中的所有一般性建议,但它仍然无效。

使用evalc,我设法为每次迭代代码保存一个不同的变量,以便在循环结束时重新创建原始矩阵。但是,使用:

  1. evalc(strcat(' var _',mat2str(i),' = varTmp'));
  2. evalc(strcat(' save(var _',mat2str(i),' -append)'));
  3. clear var *
  4. ..以这种方式它正在工作,但它仍然缓慢而且不是很干净整洁"。

    有没有办法以更好的方式做同样的事情(考虑到我必须对具有不同名称和维度的几个变量做同样的事情)或者更新.mat文件中的单元格数组添加列(行或其他)没有加载它?

    谢谢

1 个答案:

答案 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