# dsearchn
最近点搜索
函数库: TyMath
# 语法
# 说明
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