从终止的parfor获得结果

时间:2014-10-29 12:56:46

标签: matlab parfor

在1000次迭代之后parfor由于错误而终止,并且所有切片结果都消失了。

代码的格式为:

parfor i=1:2000    
B(i)=func(i)    
end

如何获得已经完成的1000次迭代的结果?

1 个答案:

答案 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的情况下很有用)。