我有一个数据集,包括~1800个融合雷达接触的距离和方位,以及到这些接触的实际距离和方位,我需要开发一个校正方程,以使感知值尽可能接近实际值。
可视化时错误似乎有趋势,所以在我看来,应该有一个稍微简单的方程式来纠正它。
这是 ~1800 方程的形式:
actual_distance = perceived_distance + X(percieved_bearing) + Y(speed_over_ground) + Z(course_over_ground) + A(标题)
求解 X、Y、Z 和 A 的最佳方法是什么?
另外,我不相信所有这些因素都是必要的,所以我完全愿意省略其中的一两个因素。
从我理解的小线性代数来看,我尝试过这样的事情,但没有运气:
Ax = b -->x = b/A via numpy.linalg.solve(A, b)
其中 A 是 4 x ~1800 矩阵,b 是 1 x ~1800 矩阵
这是否走在正确的轨道上?
需要明确的是,我希望为一个方程生成系数,该方程将校正到接触的感知距离,使其尽可能接近实际接触距离。
如果有更好的方法,我也完全愿意放弃这种方法。
提前感谢您的帮助。
求解这种方程组的最佳方法是使用: 不完全乔列斯基共轭梯度技术(ICCG)。这可以在Matlab,C++的数字配方,Nag Fortran或许多其他语言中实现。它非常有效。基本上,您正在反转一个大的带状矩阵。Golub的书详细描述了它。
看起来这很有用:
https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.linalg.cholesky.html
当你的方程多于未知数时,你可能没有一个精确的解。在这种情况下,你可以做的是使用矩阵 A 的摩尔-彭罗斯伪逆。A 乘以 b 将为您提供最小二乘距离解决方案。在numpy中,您可以使用 https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq