在for循环matlab中增加内存使用

时间:2018-10-08 02:19:59

标签: matlab for-loop

我遇到了一个for循环问题,在该循环中,内存使用量一直在逐渐增加,直到没有RAM为止。 for循环进行大约10,000次迭代,并且每次循环都应读取目录中的索引文件,使用fmincon执行某些操作,然后将输出保存到另一个索引的csv文件中。每个文件都小于1MB,处理20个文件后,内存使用量将从1GB变为2GB。 (起初,我认为问题出在使用'parfor',但我意识到,即使在普通的for循环中,我也会看到此内存“泄漏”;请单击此处以查看此问题)。下面的代码如下,其中“ my_func”是我要最小化的函数,我可以根据要求提供此函数,但是由于它是“封装的”,所以我认为这没关系。

list = dir('~/Documents/matlab_files/*.csv');
L    = length(list);
for i = 1:L
      data = readtable(strcat('~/Documents/matlab_files/',list(i).name));
      all_para = [0.03,0.3,0.001,0.001];
      try
          [x,fval] = fmincon(@(all_para)my_func(all_para,data),...
              all_para,[],[],[],[],...
              [-5,-5,0.01,0.01],...
              [5,5,5,5]);
          csvwrite(strcat('~/Documents/matlab_files/output/',list(i).name,'.csv'),x);
      catch ME
              %fprintf('without success: %s\n', ME.message);
              %continue;  % Jump to next iteration of: for i
      end
  end

同样,我本来想使用parfor,但我意识到内存使用量的增加也发生在常规for循环中。

我正在使用2018b

0 个答案:

没有答案