我正在研究的程序的一部分需要在3D空间和时间中对数据点进行排序,以尝试找到与遵循抛物线轨迹的对象相匹配的项目。这些需要联系起来。
我的开始如下:
取每个点(每个时间间隔可能有多个点)并尝试在多个时间间隔内将其与之前的点匹配。这是通过每个对象持有一个共享指针向量来完成的,这些对象也链接到它们所链接的对象。这是时间倒退,即指点将会及时返回。每个对象也可以通过多个对象链接。这给出了一个双向树。这个阶段的匹配标准是基本的,只是规定了一些噪音。
我还有一个物理类,它给出了一个错误编号,给出了3个空间和时间点。误差是双倍,是距离预测位置的距离除以时间差的倍数。
我需要做的是在C ++中找出最好的方法来找到这棵树中与抛物线最匹配的项目(即最小化错误),同时最大化链接数量并最小化时间差链接。
问题在于,在树之后,选项的数量会急剧增加,如果只需要两个点来确定错误编号,那么这将很简单。
在这种情况下,递归也会好吗?
希望它有意义。
答案 0 :(得分:1)
我会忘记数据结构并尝试解决这个问题,因为在存在大量异常噪声的情况下将曲线拟合到数据中。见http://en.wikipedia.org/wiki/RANSAC
基本思想是通过重复两步迭代来尝试找到适合数据的点的子集。
第一步:调整拟合的参数,以增加它们适合当前所选点的子集的程度。
第二步:给定当前拟合参数,选择最适合它们的点子集。
从一个随机的开始,通过合理的拟合度,这个过程应该增加每一步的拟合,直到它收敛。从许多不同的随机开始尝试,并随时选择最适合的。