я редактировал код, который я нашел в Интернете, что помогает мне рисовать точки как-то распределены на графике на основе минимального расстояния между нимиMatlab код для распределения точек на участке
Это код, который я до сих пор
x(1)=rand(1)*1000; %Random coordinates of the first point
y(1)=rand(1)*1000;
minAllowableDistance = 30; %IF THIS IS TOO BIG, THE LOOP DOES NOT END
numberOfPoints = 300; % Number of points equivalent to the number of sites
keeperX = x(1); % Initialize first point
keeperY = y(1);
counter = 2;
for k = 2 : numberOfPoints %Dropping another point, and checking if it can be positioned
done=0;
trial_counter=1;
while (done~=1)
x(k)=rand(1)*1000;
y(k)=rand(1)*1000;
thisX = x(k); % Get a trial point.
thisY = y(k);
% See how far is is away from existing keeper points.
distances = sqrt((thisX-keeperX).^2 + (thisY - keeperY).^2);
minDistance = min(distances);
if minDistance >= minAllowableDistance
keeperX(k) = thisX;
keeperY(k) = thisY;
done=1;
trial_counter=trial_counter+1;
counter = counter + 1;
end
if (trial_counter>2)
done=1;
end
end
end
end
Так что этот код работает нормально, но иногда matlab замерзает, если точки выше 600. Проблема полна, и больше очков не добавлено, поэтому Matlab выполняет работу снова и снова. Поэтому мне нужно найти способ, когда trial_counter больше 2, чтобы найти место, которое пусто и поселиться там.
Метод trial_counter используется для сброса точки, если она не подходит в третий раз. Спасибо
** warning **: если точка 'k' отбрасывается, то' keeper (k) 'не будет присвоено значение до тех пор, пока не будет принята следующая точка (допустим, k + 2) (при которой временному хранителю (k) и хранителю (k + 1) присваивается значение '0'). Это нормально, если вы хотите сохранить эти значения «0», но если все последние «k-ые» точки отклоняются, то «хранителю» никогда не будет назначено значение для этих последних точек и будет короче, чем 'numberOfPoints' , Помимо соображений скорости, поэтому важно [preallocating] (http://mathworks.com/help/matlab/matlab_prog/techniques-for-improving-performance.html#f8-793781). – Hoki