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

2025-04-05 05:25:29
推荐回答(2个)
回答1:

假设已知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个点及对应的距离值。

回答2:

你好!
以该点为半径作球(圆),计算距离该点小于这个半径的点数,即落在球(圆)中点数。
若小于20则扩大半径,若大于20
则缩小半径。
最后球(圆)中的点就是所要找的点。
如有疑问,请追问。