Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

dsearchn

最近点搜索

说明

示例

k = dsearchn(P,PQ) 返回以欧几里德距离度量的距 PQ 中的查询点最近的 P 中的点的索引。

k = dsearchn(P,T,PQ) 通过使用 Delaunay 三角剖分 T 返回 P 中最近点的索引,其中 T = delaunayn(P)。当 PQ 包含大量点时,提供 T 可以提高搜索性能。

k = dsearchn(P,T,PQ,outind) 返回 P 中最近点的索引,但对 P 的凸包之外的查询点赋给索引值 outind。例如,desearchn(P,T,PQ,Inf) 为凸包之外的查询点返回索引值 Inf

示例

[k,dist] = dsearchn(___) 还返回从 P 中的每个点到 PQ 中对应查询点的距离。

示例

全部折叠

创建一个二维数据点矩阵 P 和一个二维查询点矩阵 PQ。找到每个查询点的最近数据点,并计算对应的距离。

rng default;
P = rand([10 2]);
PQ = [0.5 0.5; 0.1 0.7; 0.8 0.7];
[k,dist] = dsearchn(P,PQ);

绘制数据点和查询点,并突出显示最靠近每个查询点的数据点。

plot(P(:,1),P(:,2),'ko')
hold on
plot(PQ(:,1),PQ(:,2),'*g')
hold on
plot(P(k,1),P(k,2),'*r')
legend('Data Points','Query Points','Nearest Points','Location','sw')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Data Points, Query Points, Nearest Points.

显示距离。

dist
dist = 3×1

    0.2349
    0.2586
    0.1825

输入参数

全部折叠

点,指定为 m×n 矩阵,其中包含维度 n 的 m 个点。例如,P = [0 0 0; 1 1 1] 表示点 (0,0,0) 和 (1,1,1) 的三维坐标。

查询点,指定为 r×n 矩阵,其中包含维度 r 的 n 个点。例如,2×3 矩阵 PQ = [-1 -1 -1; 2 2 2] 表示两个查询点 (-1,-1,-1) 和 (2,2,2) 的三维坐标。

PQ 中的列数必须与 P 中的列数相匹配。

Delaunay 三角剖分,指定为由 delaunayn 函数返回的矩阵。

外部索引值,指定为凸包外部的查询点的标量索引值。

如果 outval 指定为 [],则输出 k 等效于语法 k = dsearchn(P,T,PQ)

输出参数

全部折叠

索引,以列向量形式返回,其中包含最靠近查询点的数据点的索引。k 的长度等于查询点的数目。

距离,以列向量形式返回,其中包含每个查询点和最近的输入点之间的欧几里德距离。dist 的长度等于查询点的数目。

算法

dsearchn 基于 Qhull [1]。有关 Qhull 的信息,请参阅 http://www.qhull.org/。有关版权信息,请参阅 http://www.qhull.org/COPYING.txt

参考

[1] Barber, C.B., D.P. Dobkin, and H.T. Huhdanpaa. “The Quickhull Algorithm for Convex Hulls.” ACM Transactions on Mathematical Software, Vol. 22, No. 4, Dec. 1996, p 469–483.

在 R2006a 之前推出