我正在努力保存每次 PARFOR 迭代的输出,但直到现在都没有成功。我在网上搜索了很多,根据一些官方的 newgroup 回复,处理保存在 PARFOR 中的正确方法(即解决“透明度”问题)是以以下方式使用外部函数(基本示例) :
parfor i=1:120
display(i);
[LL ll] = eig(rand(1000,1000));
record(:,i) = diag(ll);
samplesave('save.mat',record(:,i),i);
end
随着
function samplesave(fname, data,i)
persistent st;
store(:,i)=data;
save(fname);
end
问题是,将“st”声明为 PERSISTENT 会使变量在同一个工作人员的调用中“持久”,但不会跨越 PARFOR 循环,因此在任何给定点上,您只有最后一个工作人员的全部历史记录; 下一次 PARFOR 迭代(来自不同的工作人员)将用(仅)该工作人员的整个历史记录覆盖该记录,依此类推。
如何逐步保存所有工人的历史记录?
谢谢,