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)中实施更顺畅。 UltimateKalman是1977年Paige和Saunders提出的优雅的卡尔曼过滤器和滑动器的略微简化和略微概括。他们的算法似乎比其他卡尔曼过滤器和滑动器在数量上更优越、更灵活,但奇怪的是,它们以前从未被实施或使用过。 UltimateKalman是灵活的:它可以很容易地处理时间问题、与不同尺寸的州矢量问题、在不同步骤中观测数量不尽的问题(或者在某些步骤中完全没有观测),以及最初状态预期未知的问题。UltimateKalman的编程界面被打破成简单的构件块,可用于建造过滤器、单步或多步预测器、多步或全轨滑动器和组合。本文描述了算法及其实施情况,并附有一系列实例和测试。