Я не верю, что вы можете получить эту информацию непосредственно из MATLAB, если не считать распечатки чего-либо с каждой итерацией и подсчета этих строк вручную.
Чтобы понять почему, вспомните, что каждая итерация parfor
выполняется в своем собственном рабочем пространстве: хотя увеличение счетчика в цикле допустимо, доступ к его «текущему» значению невозможен (поскольку это значение на самом деле не существует до завершения петля). Кроме того, конструкция parfor
не гарантирует какой-либо конкретный порядок выполнения, поэтому вывод значения итератора бесполезен.
cnt = 0;
parfor i=1:n
cnt = cnt + 1; % legal
disp(cnt); % illegal
disp(i); % legal ofc. but out of order
end
Может быть, у кого-то есть умный обходной путь, но я думаю, что независимая природа parfor
итераций противоречит достоверному подсчету. Ограничения, упомянутые выше, плюс ограничения на использование evalin
и т. Д. Подтверждают этот вывод.
Как предположил @Jonas, вы можете получить количество итераций с помощью побочных эффектов, возникающих за пределами MATLAB, например, создание пустых файлов в определенном каталоге и их подсчет. Это вы можете сделать в MATLAB, конечно:
fid = fopen(['countingDir/f' num2str(i)],'w');
fclose(fid);
length(dir('countingDir'));