繁体   English   中英

计算后续位置之间的欧几里德距离

[英]Computing Euclidean distances between subsequent positions

我有由 X 和 Y 坐标对组成的大型数据框,并希望计算连续坐标之间的欧几里得距离(最小尺寸约为 2000 对坐标)。

因此,我想计算从第 1 行到第 2 行、第 2 行到第 3 行、第 3 行到第 4 行等的距离。 这个问题很好地展示了如何计算轨道数据的第一个和最后一个点之间的欧几里德距离,但我的数据是更接近:

dff <- structure(list(A = c(0L, 0L, 0L, 0L, 0L, 0L), T = 0:5, X = c(668L, 670L, 672L, 674L, 676L, 678L), Y = c(259L, 259L, 259L, 259L, 259L, 260L), V = c(NA, 0, 0, 0, 0, 0)), .Names = c("A", "T", "X", "Y", "V"), row.names = c(NA, 6L), class = "data.frame")

似乎应该有一种方法可以创建一个循环来执行此操作,但我不确定如何下标。 使用dist()对这种大小的数据集的计算要求很高,无论如何我也不确定如何从对角线上提取一次性矩阵元素。

就像是

sqrt(diff(dff$X)^2 + diff(dff$Y)^2)

应该管用。 这里的关键是diff函数,它给出向量中连续项之间的差异

另一种方法,只是为了好玩:

sqrt(apply(apply(dff[,c("X","Y")], 2, diff)^2, 1, sum))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM