gpt4 book ai didi

r - 如何计算由包含x,y的矩阵定义的两点之间的欧几里得距离?

转载 作者:行者123 更新时间:2023-12-04 10:38:13 24 4
gpt4 key购买 nike

我非常迷恋欧几里得距离计算。我发现函数dist2 {SpatialTools}或rdist {fields}可以做到这一点,但是它们没有按预期工作。

我想一个点在笛卡尔系统中有两个坐标,所以[x,y]。
要测量2点之间的距离(按行定义),我需要2点的4个坐标,所以
点A:[x1,y1]
点B:[x2,y2]

点协调:

A[0,1]
B[0,0]
C[1,1]
D[1,1]

我有两个矩阵: x1 (A和C在那,由行定义)和 x2 (包含B和D)。写入矩阵:
library("SpatialTools")
x1<-matrix(c(0,1,1,1), nrow = 2, ncol=2, byrow=TRUE)
x2<-matrix(c(0,0,1,1), nrow = 2, ncol=2, byrow=TRUE)

所以我得到
> x1
[,1] [,2]
[1,] 0 1 #(as xy coordinates of A point)
[2,] 1 1 #(same for C point)

> x2
[,1] [,2]
[1,] 0 0 #(same for B point)
[2,] 1 1 #(same for D point)

计算之间的欧式距离
A <-> B  # same as x1[1,] <-> x2[1,]
C <-> D # same as x1[2,] <-> x2[2,]

我假设要获得 EuclidDist :
> x1                           x2                         EuclidDist
[,1] [,2] [,1] [,2]
[1,] 0 1 #A [1,] 0 0 #B 1
[2,] 1 1 #B [2,] 1 1 #D 0

我只想获取由[x,y]坐标标识的两个点之间的距离的 向量,但是,使用dist2我得到了一个矩阵:
> dist2(x1,x2)
[,1] [,2]
[1,] 1.000000 1
[2,] 1.414214 0

我的问题是,根据该矩阵,哪些数字描述了A-B和C-D之间的实际欧几里得距离?我误会了吗?非常感谢您的每条建议或任何解释。

最佳答案

如果您只想要向量,则类似这样的方法将为您工作。

尝试这样的事情:

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))

library(foreach)
foreach(i = 1:nrow(x1), .combine = c ) %do% euc.dist(x1[i,],x2[i,])

这将适用于任何尺寸。

如果不想使用foreach,可以使用一个简单的循环:
dist <- NULL
for(i in 1:nrow(x1)) dist[i] <- euc.dist(x1[i,],x2[i,])
dist

虽然,我还是建议foreach(因为这样很容易完成各种任务)。在软件包的文档中阅读有关它的更多信息。

关于r - 如何计算由包含x,y的矩阵定义的两点之间的欧几里得距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com