# trackingEKF

Extended Kalman filter for object tracking

## Description

A `trackingEKF`

object is a discrete-time
extended Kalman filter used to track dynamical states, such as positions and velocities
of targets
and objects.

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 when the state follows a nonlinear motion model, when the
measurements are nonlinear functions of the state, or when both conditions apply. 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 measurements can have Gaussian noise, which you can include in these ways:

Add noise 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.

Add noise in the state transition function, the measurement model function, or in both functions. In these cases, the corresponding noise sizes are not restricted.

See Extended Kalman Filters for more details.

## Creation

### Syntax

### Description

`filter = trackingEKF`

creates an extended Kalman filter object for a
discrete-time system by 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 by using one or
more `filter`

= trackingEKF(___,`Name,Value`

)`Name,Value`

pair arguments and any of the previous
syntaxes. Any unspecified properties have default values.

## Properties

## Object Functions

`predict` | Predict state and state estimation error covariance of tracking filter |

`correct` | Correct state and state estimation error covariance using tracking filter |

`correctjpda` | Correct state and state estimation error covariance using tracking filter and JPDA |

`distance` | Distances between current and predicted measurements of tracking filter |

`likelihood` | Likelihood of measurement from tracking filter |

`clone` | Create duplicate tracking filter |

`smooth` | Backward smooth state estimates of tracking filter |

`retrodict` | Retrodict filter to previous time step |

`retroCorrect` | Correct filter with OOSM using retrodiction |

`retroCorrectJPDA` | Correct tracking filter with OOSMs using JPDA-based algorithm |

`residual` | Measurement residual and residual noise from tracking filter |

`initialize` | Initialize state and covariance of tracking filter |

`tunableProperties` | Get tunable properties of filter |

`setTunedProperties` | Set properties to tuned values |

## Examples

## More About

## Algorithms

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

*k*.

*f()*is the state transition function. Random noise perturbations,

*w*, can affect the object motion. The filter also supports a simplified form,

_{k}$${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

*v*. Again, the filter offers a simpler formulation.

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

To use the simplified form, set
`HasAdditiveMeasurementNoise`

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.

## References

[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.

## Extended Capabilities

## Version History

**Introduced in R2018b**

## See Also

### Functions

`constacc`

|`constaccjac`

|`cameas`

|`cameasjac`

|`constturn`

|`constturnjac`

|`ctmeas`

|`ctmeasjac`

|`constvel`

|`constveljac`

|`cvmeas`

|`cvmeasjac`

|`initcaekf`

|`initcvekf`

|`initctekf`