在1000次迭代之后parfor由于错误而终止,并且所有切片结果都消失了。
代码的格式为:
parfor i=1:2000
B(i)=func(i)
end
如何获得已经完成的1000次迭代的结果?
答案 0 :(得分:1)
在parfor
中,您无法从以异常终止的循环中获得任何结果。但是,您可以在循环中使用try
/ catch
parfor i = 1:2000
try
B(i) = func(i);
catch E
B(i) = NaN;
end
end
或者你可能只是更复杂一点
parfor i = 1:2000
try
B(i) = func(i);
OK(i) = true;
catch E
B(i) = NaN;
OK(i) = false;
end
end
这将允许您准确确定哪些迭代失败(在func(i)
可能合法返回NaN
的情况下很有用)。