For loop in parfor loop
显示 更早的评论
Dear all, I am trying to run the following script
a = linspace(0,10);
parfor ii=1:2
for jj=1:length(a)
x(ii,jj) = rand;
end
end
which fails with an "Error: The variable x in a parfor cannot be classified." Is this a bug in Matlab? I would simply consider the vector "a" a broadcast variable, since "a" and "length(a)" are unmodified by the script.
How would you recommend to fix the script, taking into account that length(a) should be evaluated inside the parfor loop?
Thanks, Niels
采纳的回答
更多回答(1 个)
Edric Ellis
2015-3-10
编辑:Edric Ellis
2015-3-10
The limitation you're hitting here is that any for loop nested inside a parfor loop must have constant bounds to allow slicing. In your case, the bounds are constant, so you can simply write:
a = linspace(0,10);
n = length(a); % extract length outside PARFOR
parfor ii=1:2
for jj=1:n % constant bounds loop inside PARFOR
x(ii,jj) = rand;
end
end
In the case where your inner for loop has non-constant bounds, then @Greig's solution is the way to go.
类别
在 帮助中心 和 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!