Tuning an Extended Kalman Filter

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

The Kalman filter is an algorithm that seeks to find the optimal representation for a series of observations by averaging over successive states, a type of Bayesian model. In its simplest form, it exploits the mathematical fact that the product of two Gaussians is another Gaussian.


This Demonstration shows an interactive version of an example from [1] for estimating height and speed of a falling object that experiences aerodynamic drag. You can adjust the observation noise (sigma ζ), process noise (sigma ξ), number of Monte Carlo iterations, the random seed, the internal integrator for the nonlinear differential equations of motion (Euler, second-order Runge–Kutta, fourth-order Runge–Kutta), and the logarithm of the internal integration time step in seconds (, , ).

The filter diverges for many settings and converges for some with varying levels of execution speed. Convergence means the dots stay mostly inside the one-sigma rails on the residuals plots. Some of the settings are quite slow, on purpose, and your goal is to find the settings that yield convergence with the fastest execution time. This is an exercise in time-accuracy tradeoff.


Contributed by: Brian C. Beckman (May 2016)
Open content licensed under CC BY-NC-SA



The example uses advanced functional programming over lazy streams to integrate in constant memory and to modularize the integrators and other components. The code has many reusable parts and is worthy of study independently of the application to Kalman filtering.


[1] P. Zarchan and H. Musoff, Fundamentals of Kalman Filtering: A Practical Approach, 4th ed., Reston, VA: American Institute of Aeronautics and Astronautics, 2015 Chapter 7. doi:10.2514/4.102776.

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.