我有一个像这样的基本代码:
parfor i=1:8
[t,y]=ode15s(@rate,tspan,cin,options,i); % the option i is evaluated in the rate function
figure(1)
subplot(3,3,i+1)
plot(t,y)
hold on
end
是否会出现任何冲突,因为变量名y
在所有迭代中都相同?
答案 0 :(得分:3)
不,每个工人都有自己独特的命名空间。
但是,工作人员无法打开客户端上显示的数字(感谢提醒,@ Edric),因此调用ode15s
后的所有内容都不会产生任何有用的结果。
要在parfor
循环之外移动绘图,您可以执行以下操作(有更有效的解决方案,这个肯定会有效):
tCell = cell(8,1);
yCell = cell(8,1);
parfor i=1:8
[tCell{i},yCell{i}]=ode15s(@rate,tspan,cin,options,i); % the option i is evaluated in the rate function
end
figure(1)
for i=1:8
subplot(3,3,i+1)
plot(tCell{i},yCell{i})
hold on
end
答案 1 :(得分:1)
继续@Jonas的回答之后,只需注意一点,如果您使用的是R2013b或更高版本,并且希望在等待并行计算完成时显示图形,则可以使用PARFEVAL ,例如:http://www.mathworks.co.uk/help/distcomp/examples/parfeval-blackjack.html。