有很多已知的点,如何用matlab找到离其中某点最近的20个点?

如题所述

假设已知n个点的x和y,
建立两个向量:
X
=
[x1
x2
...
xn];
Y
=
[y1
y2
...
yn];
计算这些点到某点(x0,
y0)的距离,找到离它最近的20个点,代码如下:
d
=
sqrt((X-x0).^2
+
(Y-y0).^2);
%计算每一个点到指定点的距离,d
=
[d1
d2
...
dn];
JL_data
=
[X'
Y'
d'];
%构建一个表格,第一列为X,
第二列为Y,
第三列为各点到指定点的距离
[u,v]=sort(JL_data(:,3))
%表格中距离升幂排列,并找出对应的点的标号;
w=[u(size(X,2):-1:size(X,2)-20),JL_data(v(size(X,2):-1:size(X,2)-20),1:2)]%求距离最近的20个点及对应的距离值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-04
你好!
以该点为半径作球(圆),计算距离该点小于这个半径的点数,即落在球(圆)中点数。
若小于20则扩大半径,若大于20
则缩小半径。
最后球(圆)中的点就是所要找的点。
如有疑问,请追问。