如何在一组点中找到某个点的第k个最近邻居

Jam*_* Do 7 matlab nearest-neighbor

我在2d平面上有一组点(x,y).给定点(x0,y0)和数字k,如何在点集中找到(x0,x0)的第k个最近邻居.详细地,点集由两个数组表示:x和y.点(x0,y0)由索引i0给出.这意味着x0 = x(i0)并且y0 = y(i0).

Matlab中是否有任何功能或东西可以帮助我解决这个问题.如果Matlab没有这种功能,你能否提出任何其他有效的方法.

编辑:我必须为集合中的每个点(x0,y0)计算这种距离.集合的大小约为1000.k的值应约为sqrt(1500).最糟糕的是我多次这样做.在每次迭代时,集合发生变化,我再次计算距离.因此,运行时间是一个关键问题.

zam*_*tta 6

如果您要检查许多点,您可能需要先构建一个点间距离表

squareform(pdist([x y]))
Run Code Online (Sandbox Code Playgroud)