0

我有这样的基本代码:

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是否会因为变量名在所有迭代中都相同而产生任何冲突?

4

2 回答 2

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
于 2013-11-11T11:27:02.357 回答
1

继@Jonas 的回答之后,请注意,如果您使用的是 R2013b 或更高版本,并且希望在等待并行计算完成时显示图形,则可以使用PARFEVAL,就像在这个例子中一样:http ://www.mathworks.co.uk/help/distcomp/examples/parfeval-blackjack.html

于 2013-11-12T10:10:35.053 回答