creating two pairs of data which are apart by a certain distance
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Any idea as to how to create two sets of coordinates whose eucleadian distance from every other coordinate is greater than a certain threshold.
In other words i want to get coordinates which dont have any neighbours within a certain radius
Any suggestions?
0 commentaires
Réponse acceptée
Stefan
le 8 Mai 2012
use epsilon-nearest neighbors algorithm.
or simple: if your data have the coordinates x and y and TH = tour predefied threshold then calculate:
for i=1:length(x)
d=sqrt((x-x(i)).^2 +(y-y(i)).^2);
if d<=TH
datax(i)=x(i);
datay(i)=y(i);
else
outlyerx(i)=x(i);
outlzery(i)=y(i);
end
end
datax(datax==0)=[];
datay(datay==0)=[];
outlyerx(outlyerx==0)=[];
outlyery(outlyery==0)=[];
2 commentaires
Stefan
le 8 Mai 2012
this code will seperate one data set in 2 other with either at least one neighbor or none neighbor is in it's radius==TH
if you want to create 2 data sets than jan simons solution is the best way!
Plus de réponses (2)
Jan
le 8 Mai 2012
Please post more details. Currently this is the most simply solution:
% First set of points:
range = 100;
X = rand(100, 3) * range;
% Second set, all point must have distance > 5
distance = 5;
Y = X + (range + distance);
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!