creating two pairs of data which are apart by a certain distance
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Stefan
2012-5-8
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 个评论
Stefan
2012-5-8
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!
更多回答(2 个)
Jan
2012-5-8
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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!