我的应用程序中计算量最大的部分是矩阵的三角化,, 这样.
对于这个应用程序, 在哪里通常接近相同的值.
目前,我通过 QR 分解求解,:
这给出了我想要的形式。
有没有更有效的方法来执行这个操作?即使是对 QR 的适度节省也将提供性能提升,因为这一操作占我总计算时间的 30%。
这函数是Divided Difference Filter的核心,类似于更常见的Unscented Kalman Filter。该问题在介绍Cubature Kalman 滤波器的论文中明确提到。
简而言之,它基于非线性过程模型和状态协方差 Cholesky 因子计算四个“除差”矩阵。这四个矩阵水平连接,然后三角化——这形成了预测的状态协方差:
其中以上是上面计算的“除差”矩阵。然后直接使用预测的状态协方差 Cholesy 因子来生成预测测量值的“除差”矩阵。
预测测量值的三角化过程遵循类似的过程,但由于我的测量向量与我的状态向量相比较小,因此该计算(以及随后的卡尔曼增益/更新)方程不是计算密集型的(大约 4% 的过程时间)。