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

这里好像有个程序是求这个的:http://www.pudn.com/downloads585/sourcecode/math/detail2397276.html
方便的话请发到我的邮箱: 7 8 7 9 9 [email protected] 有加分哦~

假设已知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个回答  2020-02-15

最好直接用matlab自带的函数 

nearestNeighbor

网页链接

你说要 最近的20个点,那么可以做个for循环(20个循环)

在循环中利用nearestNeighbor找到最近点,再去掉它,再找最近点,,循环20次。


用nearestNeighbor前要三角剖分。

第2个回答  2014-05-13
以该点为半径作球(圆),计算距离该点小于这个半径的点数,即落在球(圆)中点数。
若小于20则扩大半径,若大于20 则缩小半径。
最后球(圆)中的点就是所要找的点。