我想计算不在圆圈内的外部点数。但是我遇到了这个问题。我的圆是单位圆。我的错误是:外部的临时变量将在每次迭代开始时被清除 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
答案 0 :(得分:0)
您似乎正在尝试将outside
视为parfor
reduction变量。在循环期间无法访问缩减变量的中间值 - 您只能执行缩减。换句话说,行fprintf('%f', outside)
导致了问题,您必须将其删除才能使parfor
循环生效。
另请注意,在parfor
循环体上操作的工作人员无法在桌面上显示图形,因此您的plot
来电不会在屏幕上显示任何内容。 (如果您愿意,可以使用print
将图形发送到文件。