随机样本尽可能多的点,每个点都有一组最小距离

1视图(30天)
所以我使用for循环,解决了这个问题,从一个随机点,找到下一个最近的点> =某个阈值。然后使用下一个点做同样的事情。这是你可以用下面的代码测试但是我很好奇地想知道如果有人知道一些数学真理或公式可以为任意大套解决这个问题点。需要澄清的是我不需要做这个点,我能找到一个解决方案更多的点之间的距离(例如每个点找到它和所有的合作伙伴而不是用矩阵运算说10000 x10000将耗尽内存)
即使你知道一个词或一个更好的方法来定义这是什么是很有帮助的我也可能数学论坛!感谢你的帮助!
numPoints = 1000;
poleDistances =圆兰德(numPoints, 2) * (100);
removePtsCloserThan = 10;
numPoints =大小(poleDistances, 1);
x = poleDistances (: 1);
y = poleDistances (:, 2);
d =√(x (:) - x (:)”)。^ 2 + (y (:) - y (:)”)。^ 2);
c =大小(d, 1);
dIndex = 1: c + 1:元素个数(d);
d (dIndex) =正;
k = randsample (numPoints, 1);
keepPoints = k;
:d (k) =南;
真正的
% k =找到(isnan(诊断接头(d)), 1, '第一次');
pnt1 = d (:, k);
够远= abs (pnt1) > = removePtsCloserThan & abs (pnt1) <正;
pnt1(~够)=正;
[sdfg k] = nanmin (abs (pnt1));
%如果isinf (sdfg)
%的键盘
%结束
d ([k;找到(~够)],:)=南;
如果所有(isnan (d (:)))
打破
结束
keepPoints结束(+ 1)= k;
结束
图;持有
circSize = repmat (removePtsCloserThan * 2、长度(keepPoints), 1);
pos = [poleDistances (keepPoints 1) -removePtsCloserThan poleDistances (keepPoints 2) -removePtsCloserThan circSize, circSize,);
k = 1:长度(keepPoints)
r =矩形(“位置”pos (k,:)“弯曲”[1])
r。FaceColor = [0。5。5];
结束
散射(poleDistances (: 1) poleDistances (:, 2),“波”);
散射(poleDistances (keepPoints, 1), poleDistances (keepPoints, 2),“填充”,“MarkerFaceColor”,“r”);
%
x = poleDistances (keepPoints, 1);
y = poleDistances (keepPoints 2);
d =√(x (:) - x (:)”)。^ 2 + (y (:) - y (:)”)。^ 2);
d (d = = 0) = nan
最小值(d (:))
3评论

登录置评。

答案(0)

s manbetx 845


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!