2026a

# dsearchn


最近点搜索

函数库: TyMath

# 语法

k, = dsearchn(P,PQ)

k, = dsearchn(P,T,PQ)

k, = dsearchn(P,T,PQ,outind)

k,dist = dsearchn(___)

# 说明

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


k, = dsearchn(P,T,PQ) 通过使用 Delaunay 三角剖分 T 返回 P 中最近点的索引,其中 T = delaunayn(P)。


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


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

# 示例

最近的二维点

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

using TyMath
using TyPlot
rng = MT19937ar(5489)
P = rand(rng,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"],loc="southwest")

显示距离。

dist
3-element Vector{Float64}:
 0.2349134647936461
 0.2585790546858916
 0.18251190326395475

# 输入参数

P — 点
矩阵

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

数据类型: Int64 | Int32 | Int16 | Int128 | Float16 | Float32 | Float64

PQ — 查询点
矩阵

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

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

数据类型: Int64 | Int32 | Int16 | Int128 | Float16 | Float32 | Float64

T — Delaunay 三角剖分
矩阵

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

数据类型: Int64 | Int32 | Int16 | Int128

outind — 外部索引值
标量

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

数据类型: Int64 | Int32 | Int16 | Int128

# 输出参数

k — 索引
列向量

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

数据类型: Int64 | Int32 | Int16 | Int128

dist — 距离
列向量

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

数据类型: Float16 | Float32 | Float64