我正在寻找一种方法来比较r中的2(或更多)igraph对象。这些是3-dim中的轨迹,它们是节点和边的网络,但不一定是相同的数量,只是它们在3-dim中有相应的坐标。
我认为像Procrustes这样的东西可以很好地工作,但需要相同数量的点,所以我需要一个像迭代最近点(ICP)这样的前置步骤来找到网络之间的对应关系。
我担心我已经陷入了试图为Procrustes提供解决方案的兔子洞中(到目前为止还没有从ICP中得到一个明智的答案),并且认为我应该接触这个社区中的聪明人,看看是否有我遗漏的技术。这对我来说是一个新领域,非常感谢任何建议。
提前感谢!
我试过了:
我最初尝试了Procrustes算法,但只发现我需要相等大小的数据集,然后尝试用R为ICP编写我自己的函数,但我认为它不能完全工作,并且产生的网络对我来说看起来不正确。我这里的问题更多的是方法而不是帮助修复代码。
如果你有很多节点,路径的总长度应该大致相同,你可以尝试重新采样较长的路径,以获得相同数量的节点。
如果路径长度不同,但节点之间的距离相差不大,则可以在多个初始条件下运行ICP算法,首先将较短路径(长度为n)的第一个节点与较长路径(长度为k)的(n - k)个节点对齐。
既然你说它们是空间坐标,你可能想通过创建更多的节点来进一步分割路径,为了使两个路径的节点之间的边长度相等(可能需要做一些舍入),然后你可以在路径之间应用常规距离度量。
显然,如果你正在处理拉伸、剪切、透视转换或更复杂的事情,这些建议将是相当愚蠢的。当然,你可能已经考虑过这些选择,并放弃了它们,但你没有这么说。我很想知道目的是什么!