увеличение использования памяти для цикла Matlab - PullRequest
0 голосов
/ 08 октября 2018

У меня проблема с циклом for, где использование памяти постепенно увеличивается, пока не останется ОЗУ.Цикл for выполняется около 10 000 итераций, и каждая из них должна читать индексированный файл в каталоге, выполнять некоторые операции с помощью fmincon, а затем сохранять вывод в другой индексированный файл csv.Каждый из файлов имеет размер менее 1 МБ, а после обработки 20 файлов объем используемой памяти изменяется от 1 ГБ до 2 ГБ.(Изначально я думал, что проблема в использовании 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...