【发布时间】:2021-01-03 02:15:34
【问题描述】:
根据我阅读的一项研究,我正在尝试根据欧几里得距离从曲线中提取三个点。从曲线的最左边开始,我想在起点(我已经可以做到)、中点和直线的三分之二处提取 X、Y 值。但是,我不知道如何使用欧几里得距离来找到相应的 X 和 Y 值,并且我希望复制的研究谁的方法没有概述这是如何完成的,所以希望你们好人能够提供帮助.
如果我的数据看起来有点像这样(真实数据每行包含 21 个 X 和 21 个 Y 值):
df <- data.frame(x = c(-4, -3, -2, -1, 0, 1, 2, 3, 4), y = c(1.5, 1.5, 1.5, 1.25, 0.8, 0, -1.2, -2.8, -4))
这在视觉上看起来像:
plot(df)
lines(df)
欧式距离为:
根据 Roland 和 Bertil 的反馈更新
cumsum(diag(as.matrix(dist(cbind(df$x, df$y), method = "euclidean"))[-1,]))
[1] 1.000000 2.000000 3.030776 4.127362 5.407987 6.970037 8.856833 10.418883
如何提取直线中途和直线中 75% 的点?
非常感谢任何和所有帮助。
【问题讨论】:
-
你想要
dist(cbind(df$x, df$y), method = "euclidean"),或者,因为你只需要第一列,with(df, sqrt((x- x[[1]])^2 + (y - y[[1]])^2))。但是,您确定相关点不仅仅由 x 值定义吗?或者应该使用欧几里得距离而不是曲线上的距离(那么cumsum(diag(as.matrix(dist(cbind(df$x, df$y), method = "euclidean"))[-1,]))可能有用)? -
@Roland,感谢您的回复。我正在查看的论文将曲线的长度计算为连续的 x,y 坐标对之间的欧几里得距离之和。然后他们在曲线上的三个点提取 x,y 值。不幸的是,x,y 值的提取似乎不仅仅基于 x 值。
-
哦,我明白了,我的错,这是非常错误的^^我将删除它,因为它根本没有用,非常感谢您非常尊重的评论!
-
@Paul 这种事情很容易做到。别担心。
标签: r curve euclidean-distance