У меня есть следующий цикл parfor
, который я хотел бы выполнить.
Я получаю сообщение об ошибке:
Error: File: Coords_to_distances4.m Line: 32 Column: 9
The variable nr in a parfor cannot be classified.
, которое указывает на последнюю строку внутреннего цикла for.
nr
объявлено и инициализировано вне цикла, и я не вижу никакой другой связи между индексацией переменных или такой, о которой говорят все другие решения.
coords = ... %nx2 array of x and y coordinates
n = length(coords); %n can be up to several million
dr = 0.01; %distance resolution for upcoming calculations
nr = [zeros(200000,1)]; %array to hold counts of distances up to maximum of 200000*dr
parfor i = 1:n
for j = i+1:n
dx = coords(i,1) - coords(j,1); %get separation in x
dy = coords(i,2) - coords(j,2); % and in y
r = sqrt(dx*dx + dy*dy); %calculates Pythagorean distance
nbin = floor(r/dr + 0.5); %rounds to the nearest integer
nr(nbin) = nr(nbin) + 1; %uses the distance as an index to the array to incremenet
end
end
Что я делаю не так?Можно ли распараллелить это?