Tuning an Extended Kalman Filter

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.


  • [Snapshot]
  • [Snapshot]
  • [Snapshot]


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.
    • Share:

Embed Interactive Demonstration New!

Just copy and paste this snippet of JavaScript code into your website or blog to put the live Demonstration on your site. More details »

Files require Wolfram CDF Player or Mathematica.

Mathematica »
The #1 tool for creating Demonstrations
and anything technical.
Wolfram|Alpha »
Explore anything with the first
computational knowledge engine.
MathWorld »
The web's most extensive
mathematics resource.
Course Assistant Apps »
An app for every course—
right in the palm of your hand.
Wolfram Blog »
Read our views on math,
science, and technology.
Computable Document Format »
The format that makes Demonstrations
(and any information) easy to share and
interact with.
STEM Initiative »
Programs & resources for
educators, schools & students.
Computerbasedmath.org »
Join the initiative for modernizing
math education.
Step-by-Step Solutions »
Walk through homework problems one step at a time, with hints to help along the way.
Wolfram Problem Generator »
Unlimited random practice problems and answers with built-in step-by-step solutions. Practice online or make a printable study sheet.
Wolfram Language »
Knowledge-based programming for everyone.
Powered by Wolfram Mathematica © 2018 Wolfram Demonstrations Project & Contributors  |  Terms of Use  |  Privacy Policy  |  RSS Give us your feedback
Note: To run this Demonstration you need Mathematica 7+ or the free Mathematica Player 7EX
Download or upgrade to Mathematica Player 7EX
I already have Mathematica Player or Mathematica 7+