Parfor loops skipping an index
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
When I run the piece of code below, the result shows that there is an index that is not executed...
temp=struct('myfield1',num2cell(ones(2,6)));
parfor i = 1:6
temp(2,i).myfield1 = i*4;
temp(2,i).myfield2 = i;
end
I have run this on a few computers and one of the index is always not executed (or at least seems to). For example, I could have temp(2,6).myfield1=1 and temp(2,6).myfield2=[] instead of temp(2,6).myfield1=24 and temp(2,6).myfield2=6.
Could it be because I did not define all the fields beforehand?
0 Kommentare
Antworten (1)
Edric Ellis
am 6 Jan. 2015
Yes, defining all the fields of temp beforehand works around this problem, like so:
temp=struct('myfield1',num2cell(ones(2,6)), 'myfield2', []);
parfor i = 1:6
temp(2,i).myfield1 = i*4;
temp(2,i).myfield2 = i;
end
% Assertions:
assert(isequal(4:4:24, [temp(2, :).myfield1]));
assert(isequal(1:6, [temp(2, :).myfield2]));
2 Kommentare
Edric Ellis
am 6 Jan. 2015
I'm afraid I know of no other workaround involving structures. Could you perhaps return cell arrays of data with which you can recreate the structure outside the PARFOR loop?
Siehe auch
Kategorien
Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!