使用parfor临时变量

时间:2016-12-14 19:49:33

标签: matlab parfor

我想计算不在圆圈内的外部点数。但是我遇到了这个问题。我的圆是单位圆。我的错误是:外部的临时变量将在每次迭代开始时被清除 parfor循环。

function [  ] = girkoson( N,n )
%UNTİTLED Summary of this function goes here
%   Detailed explanation goes here
hold on
outside = 0;
parfor i=0:N
    E=ones(N,n);
    karekok = sqrt(n);
    E = [E, eig(randn(n))/karekok];
    a=real(E);
    b= imag(E);
    plot(a,b,'.r');  
        if (a>= -1) | (a<=1) | (b>=-1) | (b<=1)
        outside = outside +1;
        fprintf('%f',outside);
        end
end

derece=0:0.01:2*pi; 
xp=1*cos(derece);
yp=1*sin(derece);
x=0;y=0;
plot(x+xp,y+yp,'-b');
hold off
end

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试将outside视为parfor reduction变量。在循环期间无法访问缩减变量的中间值 - 您只能执行缩减。换句话说,行fprintf('%f', outside)导致了问题,您必须将其删除才能使parfor循环生效。

另请注意,在parfor循环体上操作的工作人员无法在桌面上显示图形,因此您的plot来电不会在屏幕上显示任何内容。 (如果您愿意,可以使用print将图形发送到文件。