Skip to content
A comparison/demonstration of five predictive filters and smoothers (KF, KS, LKF, EKF, EKF2) based on an expansion of two examples in Gelb's "Applied Optimal Estimation", comparing and contrasting them in both linear and nonlinear cases in the measurements as well as in the dynamics. See my linked webpage discussing the problem.
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

(This is the type of result this script produces - explained fully on my webpage linked below & above.) Example result from script

gravdragdemo.m, Oct 2006
Andy Ganse, Applied Physics Laboratory, University of Washington

A classic textbook on predictive filters is Applied Optimal Estimation, editted by Gelb (1974). In section 6.1 of that book are two simple radar tracking examples (6.1-2 and 6.1-3) which demonstrate several nonlinear filters:

Ex. 6.1-2 fig. Ex. 6.1-3 fig.

I've programmed up those examples into a Matlab script called gravdragdemo.m and added a few other filters to compare and contrast them in both linear and nonlinear cases (in the measurements as well as the dynamics), forming a really broad tutorial on these different types of filters. Filters in the script include: Kalman Filter, Kalman Smoother, Linearized Kalman Filter, Extended Kalman Filter, 2nd order Extended Kalman Filter.

These examples use radar ranging to estimate the elevation, downward velocity, and drag coefficient for a falling body as functions of time. The problem and this script's results are discussed fully on my webpage: The plots on that webpage were produced by this script but are included here (along with the two diagram figures).

In the Matlab script we can choose whether to make the measurements a linear or nonlinear function of the states by setting r1 and r2 to be nonzero or zero. We can also specify whether to make the dynamics linear or nonlinear by setting the forces on the falling body (drag d and gravitational acceleration g) to nonzero or zero. Granted, for the linear case it's a little strange because the "falling" body no longer even has gravity acting on it, but the idea was to have an example which kept at its initial velocity to make it linear - so sue me!

You can’t perform that action at this time.