question on using parfor
2 views (last 30 days)
Show older comments
Baozai
on 22 Nov 2016
Commented: Alexandra Harkai
on 24 Nov 2016
Hello, all.
I got a question on using parfor in matlab. When I tried to run the following code, I got an error showing:"Error: The variable Resp in a parfor cannot be classified.". Is this because Resp will be generated simultaneously when jjjj will be executed parallelly? If so, does this mean I can not perform this since different Phi use the same Resp as the first structure name? Will there be any idea on solving this problem? Thank you very much.
The following are the codes:
sizePhiValuep = 7;
sizeMassp = 20;
parfor (jjjj=1:sizePhiValuep,7)
Resp.(sprintf('Phi%d',jjjj)).MaxX2RespBegin_beta= zeros(sizeMassp,1);
Resp.(sprintf('Phi%d',jjjj)).MaxX2RespEnd_beta= zeros(sizeMassp,1);
end
0 Comments
Accepted Answer
Alexandra Harkai
on 22 Nov 2016
The error message refers to the variable classification when using parfor: classification-of-variables-in-parfor-loops. It doesn't know if you'll operate on segments in each loop or accumulate values regardless of the iteration order.
You could make Resp-something an array (or two arrays, if you need Begin and End) and index into that from the corresponding loop using jjjj.
0 Comments
More Answers (1)
Baozai
on 23 Nov 2016
1 Comment
Alexandra Harkai
on 24 Nov 2016
Cool.
Dynamic variable name generation for indexing purposes ( sprintf('Phi%d',jjjj) ) should be avoided anyway, so it's always good practice to use 'actual' indexing instead.
See Also
Categories
Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!