creating two pairs of data which are apart by a certain distance

1 view (last 30 days)
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?

Accepted Answer

Stefan
Stefan on 8 May 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 Comments
Stefan
Stefan on 8 May 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!
Bharathwaj
Bharathwaj on 9 May 2012
Sorry for not posting in depth details about the requirement. Apologies..
The problem is i ve two arrays say x and y containing the coordinates to a surface. I dont want any two coordinates to llie within a certain distance..or say a radius...
If i use the above suggestion, i am not able to achieve it..for whatever be the value of "TH" its not sorting it...
I would be actually doing this i guess:
First calculate the distances of the current coordinate point with others..and check the distance array and if its below the "TH" delete the corresponding coordinate value from the original value.
Is this logical ?
Thanks for your input guys :)

Sign in to comment.

More Answers (2)

Stefan
Stefan on 8 May 2012
if the data set i very large you have to vectorize the code...

Jan
Jan on 8 May 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);

Categories

Find more on 3-D Scene Control in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!