我有一个数据集,其中包括约1800个融合雷达触点的距离和方位以及与这些触点的实际距离和方位,我需要开发一个校正方程以使感知值与实际值尽可能接近值。
可视化时错误似乎有趋势,所以在我看来应该有一个简单的方程来校正它。
这是〜1800等式的形式:
actual_distance =感知距离+ X(perceved_bearing)+ Y(speed_over_ground)+ Z(course_over_ground)+ A(heading)
求解X,Y,Z和A的最佳方法是什么?
此外,我不认为所有这些因素都是必要的,因此我完全愿意省略其中一个或两个因素。
从我了解的线性小代数中,我尝试过这种运气不好的事情:
Ax = b-> x = b / A通过numpy.linalg.solve(A,b)
其中A是4 x〜1800矩阵,b是1 x〜1800矩阵
这是在正确的轨道上吗?
要清楚一点,我期望为一个方程生成coefficeints,该方程将校正到接触的感知距离,从而使其尽可能接近实际的接触距离。
如果有更好的方法,我也完全愿意放弃此方法。
谢谢您的帮助。
答案 0 :(得分:1)
解决此类方程组的最佳方法是使用:不完整的Cholesky共轭梯度技术(ICCG)。可以在Matlab,C ++的数值配方,Nag Fortran或许多其他语言中实现。它非常有效。基本上,您正在反转一个大型的带状矩阵。 Golub的书对此进行了详细介绍。
这样看起来很有用:
https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.linalg.cholesky.html
答案 1 :(得分:1)
当方程式多于未知数时,您可能没有确切的解。在这种情况下,您可以使用矩阵A的Moore-Penrose伪逆。乘以b将获得最小平方距离的解。在numpy中,您可以使用https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq