【发布时间】:2019-02-23 00:56:00
【问题描述】:
我真的很难以具有不同 x 值和每个轨迹的不同点数的 xy 点集的形式找到两条车辆轨迹之间的总面积(无论是正的还是负的)。我已经尝试过内置的集成功能;我尝试使用 (x1,y2-y1) 的内置近似函数并取绝对值然后对其进行积分,但这不可能,因为在我的情况下 y1 和 y2 的长度不同并且 x 值不一样对于每个轨迹(我有 x1 和 x2)!我还在“MESS”和“DescTools”等不同的包中尝试了AUC(曲线下面积)函数(AUC(x1,abs(y2-y1))),以找到该区域,但由于同样的原因再次不适用于我的情况(不同的向量长度和不同的 x 值)。最后,我在pathmapping 包中发现了一个名为“CreateMap”的函数,它非常棒,可以计算两条轨迹之间的总面积,但只有一个问题是我无法定义我想计算的 x 范围范围内(它计算下面第二张图所示的面积,而我想计算第一张图所示的面积),所以我在这个函数中看不到任何允许您确定 x-range 或 from哪个点你想计算哪个点的面积。
这是一个例子:
library("pathmapping")
x1<-c(1,3,5,9,13,14,16,18,23)
y1<-c(8,8,10,10,6,7,4,5,5)
x2<-c(3,6,7,11,11,15,18)
y2<-c(7.5,7.5,11,11,4.5,4.5,10)
path1<-cbind(x1,y1)
path2<-cbind(x2,y2)
CreateMap(path1,path2,F)
下图显示了所需的阴影区域: 我可以使用 CreateMap 函数找到这个阴影区域: 所以基本上我想计算由两条轨迹的内部/最近起点/终点界定的两条轨迹之间的面积(如第一个图所示)。我可以确定边界,但找不到将它们包含在 CreateMap 函数中的方法。
综上所述,我需要计算上图第一个阴影的面积,我有两种情况: 1. 在 MESS 和 DescTools 包中内置了积分函数和 AUC 函数,我根本无法计算面积,因为我有不同的轨迹长度(在上面的例子中,第一个有 9 个点,而第二个有 7 个点)和每个轨迹的不同 x 值(path1 有 x1,path2 有 x2),尽管可以包括 x 范围或边界在提到的功能。 2. 路径映射包中的 CreateMap 函数可以完美地计算区域(在图 2 中),但无法确定或包含函数中的边界,因为我想仅计算最近的一对轨迹开始/结束之间的轨迹之间的区域点(如图1)
任何有关代码或功能的建议/提示(如果可能)将不胜感激
【问题讨论】:
-
我想你必须找出断点的位置(线相交的地方)并分别整合每个区域,这样你才能正确地做差异
-
我同意你的看法。除非有办法检测交叉点并自动整合每个部分,否则我有大量轨迹并手动或视觉执行此操作将永远持续
-
是的,我只是建议一种方法,因为您的问题需要做很多工作并且不清楚您尝试了什么(“无济于事”不是很清楚)。如果找到交叉点是问题,请具体发布,如果断点之间的集成是问题,请具体发布。
-
感谢您的建议。我编辑了原始帖子,包括我尝试过的内容以及我在各个方面面临的问题。我希望现在更清楚了。