2016-12-14 8 views
0

Я хочу рассчитать подсчет внешних точек, которые не входят в круг. Но у меня эта проблема. Мой круг - это единичный круг. Моя ошибка такова: временная переменная снаружи будет очищена в начале каждой итерации в парфоре.Использование 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

Какая проблема? Вы просто бросили свой код здесь. Какой у Вас вопрос? – Adriaan

+0

Я только что отредактировал – Bertug

ответ

0

Похоже, вы пытаетесь лечить outside, как parforreduction переменной а. Вы не можете получить доступ к промежуточным значениям редукционных переменных во время цикла - вы можете выполнять только сокращения. Другими словами, строка fprintf('%f', outside) вызывает проблему, вы должны удалить ее для цикла parfor для работы.

Также обратите внимание, что работники, работающие на корпусе вашей петли parfor, не могут отображать графику на рабочем столе, поэтому ваши вызовы plot не будут отображаться на экране. (Вы можете использовать print, чтобы выдать графику в файл, если хотите).

+0

Я не использовал печать, потому что график может отображать круг и точки. – Bertug