我有一个基于卡尔曼滤波器的建模代码,它是为近实时区域电离层映射应用程序开发的。该代码使用卡尔曼滤波器将来自不同传感器的数据同化为地图(由一组基函数描述)。
我正在尝试将其扩展到更大的区域和更多的传感器,但是由于涉及的大矩阵(数千行/列),卡尔曼滤波器的矩阵代数部分变得非常慢。我怀疑解决运行时问题的最佳方法是利用这些矩阵通常非常稀疏的事实,其中 80% 或更多的总元素为零。原因是每个传感器都有一个与映射系数联合估计的偏置参数。这在 Kalman H 矩阵中该传感器的列中显示为 1,对于每个其他传感器和映射系数,在列中显示为 0。有数百个传感器,每个传感器在每个时期贡献 8-10 个观测值,因此有很多零。
我可以看看使用稀疏算法实现卡尔曼滤波器的组件,特别是乘法和反演*,但我想知道是否有更好的方法可以以更适合矩阵的情况的不同形式重新转换卡尔曼滤波器疏?我知道我可以使用集成卡尔曼滤波器或类似的东西,但如果可能的话,我想保留纯线性卡尔曼滤波器的最优性;总数据量并不高,只是线性模型产生的大型稀疏矩阵。
在实现方面,这是在 IDL 中完成的,但是核心矩阵代数是通过调用外部优化的 LA 库(特别是 ATLAS)来完成的。
*我知道最佳卡尔曼滤波器实现避免反转,而是使用 UD 分解。我正在考虑尝试实现这样的东西,所以这可能是答案,但考虑到矩阵的稀疏性,我正在寻找是否有更好的解决方案。