creating two pairs of data which are apart by a certain distance
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Stefan
el 8 de Mayo de 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 comentarios
Stefan
el 8 de Mayo de 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!
Más respuestas (2)
Stefan
el 8 de Mayo de 2012
if the data set i very large you have to vectorize the code...
0 comentarios
Jan
el 8 de Mayo de 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 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!