问题描述
在尝试阅读我的研究之后,我试图根据欧几里得距离从一条曲线中提取三个点。从曲线的最左端开始,我想在起点(已经可以做到),直线的中点和三分之二处提取X,Y值。但是,我不知道如何使用欧几里得距离来找到相应的X和Y值,而我想复制的研究对象的方法并没有概述其完成方法,因此希望您的好人能够为您提供帮助
如果我的数据看起来像这样(实际数据每行包含21个X和21个Y值):
df <- data.frame(x = c(-4,-3,-2,-1,1,2,3,4),y = c(1.5,1.5,1.25,0.8,-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_m <- dist(df) %>%
as.matrix()
然后我们可以通过提取下对角线[(2,1),(3,2),...]
并将其累加起来得出累积距离
dist_m[2:nrow(dist_m),1:(nrow(dist_m)-1)] %>%
diag() %>%
cumsum()
其余的应该很简单