Hi everybody,
I have recently been looking into parfor loops, mostly out of curiosity.
I have lots of loops which follow this syntax:
A = {};B = [1 3 6];parfor i = 1:3 A{B(i)} = i;endA
I don't understand why this code produces an error, I know that the order in which the calculations may be carried out are random but both A and B are defined outside the loop, the index into both is given by the loop number 'i' and the results can be entered into A randomly as it's an array. So why does this code fail?
Any help would be greatly appreciated,
Rod.
EDIT
My problem is basically that I have input matrices or vectors and for loops which I want to swap to parfor, but often I only want to access certain parts of each input matrix or vector. parfor won't accept a non continuous index like parfor i = [1 3 6], but you also can't use [1 3 6] as an index inside the loop because values might be duplicates.
The solution I've found is the inclusion of an if statement:
A = {};parfor i = 1:6 if i == 1||i == 3||i == 6 A{i} = i; endendA
Serious coders here will probably laugh at me, but it does what I want.
Best Answer