Extended Kalman filter

The `trackingEKF`

class creates
a discrete-time extended Kalman filter used for tracking positions and velocities of
target platforms. A Kalman filter is a recursive algorithm for estimating the evolving
state of a process when measurements are made on the process. The extended Kalman filter
can model the evolution of a state that follows a nonlinear motion model, or when the
measurements are nonlinear functions of the state, or both. The filter also allows for
optional controls or forces to act on the object. The extended Kalman filter is based on
the linearization of the nonlinear equations. This approach leads to a filter
formulation similar to the linear Kalman filter, `trackingKF`

.

The process and the measurements can have Gaussian noise which can be included in two ways:

Noise can be added to both the process and the measurements. In this case, the sizes of the process noise and measurement noise must match the sizes of the state vector and measurement vector, respectively.

Noises can be included in the state transition function, the measurement model function, or both. In these cases, the corresponding noise sizes are not restricted.

`filter = trackingEKF`

creates an extended Kalman filter object for a
discrete-time system using default values for the
`StateTransitionFcn`

, `MeasurementFcn`

, and
`State`

properties. The process and measurement noises are
assumed to be additive.

specifies
the state transition function, `filter`

= trackingEKF(`transitionfcn`

,`measurementfcn`

,`state`

)`transitionfcn`

,
the measurement function, `measurementfcn`

, and
the initial state of the system, `state`

.

configures
the properties of the extended Kalman filter object using one or more `filter`

= trackingEKF(___,`Name,Value`

)`Name,Value`

pair
arguments. Any unspecified properties have default values.

clone | Create extended Kalman filter object with identical property values |

correct | Correct Kalman state vector and state error covariance matrix |

correctjpda | Correct state and state estimation error covariance using JPDA |

distance | Distance from measurements to predicted measurement |

initialize | Initialize extended Kalman filter |

likelihood | Measurement likelihood |

predict | Predict extended Kalman state vector and state error covariance matrix |

residual | Measurement residual and residual covariance |

The extended Kalman filter estimates the state of a process governed by this nonlinear stochastic equation:

$${x}_{k+1}=f({x}_{k},{u}_{k},{w}_{k},t)$$

*x _{k}* is the state at step

$${x}_{k+1}=f({x}_{k},{u}_{k},t)+{w}_{k}$$

To use the simplified form, set
`HasAdditiveProcessNoise`

to `true`

.

In the extended Kalman filter, the measurements are also general functions of the state:

$${z}_{k}=h({x}_{k},{v}_{k},t)$$

*h(x _{k},v_{k},t)*
is the measurement function that determines the measurements as functions of the state.
Typical measurements are position and velocity or some function of position and
velocity. The measurements can also include noise, represented by

$${z}_{k}=h({x}_{k},t)+{v}_{k}$$

To use the simplified form, set
`HasAdditiveMeasurmentNoise`

to `true`

.

These equations represent the actual motion and the actual measurements of the object. However, the noise contribution at each step is unknown and cannot be modeled deterministically. Only the statistical properties of the noise are known.

[1] Brown, R.G. and P.Y.C. Wang. *Introduction
to Random Signal Analysis and Applied Kalman Filtering*.
3rd Edition. New York: John Wiley & Sons, 1997.

[2] Kalman, R. E. “A New Approach to Linear Filtering
and Prediction Problems.” *Transactions of the ASME–Journal
of Basic Engineering*, Vol. 82, Series D, March 1960, pp.
35–45.

[3] Blackman, Samuel and R. Popoli. *Design and
Analysis of Modern Tracking Systems*, Artech House.1999.

[4] Blackman, Samuel. *Multiple-Target Tracking
with Radar Applications*, Artech House. 1986.

`cameas`

|`cameasjac`

|`constacc`

|`constaccjac`

|`constturn`

|`constturnjac`

|`constvel`

|`constveljac`

|`ctmeas`

|`ctmeasjac`

|`cvmeas`

|`cvmeasjac`

|`initcaekf`

|`initctekf`

|`initcvekf`

`trackingABF`

|`trackingCKF`

|`trackingGSF`

|`trackingIMM`

|`trackingKF`

|`trackingMSCEKF`

|`trackingPF`

|`trackingUKF`