Replacing "test(ii,1)=Test(input,ii);" with "test{ii}=Test(input,ii);" also appears to prevent the error from occuring.
What is causing this intermittent error in parfor?
조회 수: 36 (최근 30일)
이전 댓글 표시
The attached script produces an intermittent error:

Increasing n in untitled_script.m appears to increase the likelihood of the error occuring. Replacing parfor with for prevents the error from occuring. Setting n=1 prevents the error from occuring. Replacing "test(ii,1)=Test(input,ii);" with "Test(input,ii);" prevents the error from occuring.
Anyone understand what is going on here?
채택된 답변
Matt J
2025년 12월 9일 0:56
편집: Matt J
2025년 12월 9일 1:04
If you add the indicated line, your class constructor will support no-argument calls, and the error will go away:
function obj = Test(inputArg1,ii)
arguments
inputArg1
ii = 2
end
if ~nargin, return; end %<---- Add this
display(num2str(ii))
obj = obj.method1(inputArg1);
end
This is necessary because the loop variable values ii in a parfor loop will not be visited in in sequential order, meaning that certain elements in the vector test will need to be populated temporarily with argument-free constructor calls.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!