小编use*_*533的帖子

从2个向量中寻找最佳匹配的成对点

我有2个点,X,Y坐标点.列表1包含的点数多于列表2.

任务是以整体欧氏距离最小化的方式找到成对的点.

我有一个工作代码,但我不知道这是否是最好的方法,我想得到提示我可以改进结果(更好的算法找到最小值)或速度,因为列表大约2000元素.

实现样本向量中的回合以获得具有相同距离的点.使用"rdist"功能,所有距离都以"距离"生成.比矩阵中的最小值用于链接2点("dist_min").这两个点的所有距离现在都被NA替换,并且循环继续搜索下一个最小值,直到列表2的所有点都具有来自列表1的点.最后,我添加了用于可视化的图.

require(fields)

set.seed(1)
x1y1.data <- matrix(round(runif(200*2),2), ncol = 2)   # generate 1st set of points 
x2y2.data <- matrix(round(runif(100*2),2), ncol = 2)   # generate 2nd set of points

distances <- rdist(x1y1.data, x2y2.data)
dist_min <- matrix(data=NA,nrow=ncol(distances),ncol=7)   # prepare resulting vector with 7 columns

for(i in 1:ncol(distances)) 
{
    inds <- which(distances == min(distances,na.rm = TRUE), arr.ind=TRUE)

    dist_min[i,1] <- inds[1,1]              # row of point(use 1st element of inds if points have same distance)
    dist_min[i,2] <- inds[1,2]              # column of point (use …
Run Code Online (Sandbox Code Playgroud)

r distance matrix

7
推荐指数
1
解决办法
2192
查看次数

标签 统计

distance ×1

matrix ×1

r ×1