UltimateKalman is a flexible linear Kalman filter and smoother implemented in three popular programming languages: MATLAB, C, and Java. UltimateKalman is a slight simplification and slight generalization of an elegant Kalman filter and smoother that was proposed in 1977 by Paige and Saunders. Their algorithm appears to be numerically superior and more flexible than other Kalman filters and smoothers, but curiously has never been implemented or used before. UltimateKalman is flexible: it can easily handle time-dependent problems, problems with state vectors whose dimensions vary from step to step, problems with varying number of observations in different steps (or no observations at all in some steps), and problems in which the expectation of the initial state is unknown. The programming interface of UltimateKalman is broken into simple building blocks that can be used to construct filters, single or multi-step predictors, multi-step or whole-track smoothers, and combinations. The paper describes the algorithm and its implementation as well as with a test suite of examples and tests.
翻译:终极卡尔曼(UltimateKalman)是一种灵活的线性卡尔曼滤波与平滑器,以三种主流编程语言实现:MATLAB、C和Java。该算法是对Paige与Saunders于1977年提出的优雅卡尔曼滤波与平滑器的轻微简化和泛化。其算法在数值稳定性与灵活性上优于其他卡尔曼滤波与平滑器,但值得注意的是,此前从未被实现或使用。终极卡尔曼具有高度灵活性:可轻松处理时变问题、状态向量维度逐次变化的问题、不同步骤中观测数量可变(或某些步骤无观测)的问题,以及初始状态期望未知的问题。其编程接口分解为简单构建模块,可用于构建滤波器、单步或多步预测器、多步或全轨迹平滑器及其组合。本文描述了该算法及其实现过程,并附带了包含示例与测试的测试套件。