# Estimation Filters

Sensor Fusion and Tracking Toolbox™ provides estimation filters that are optimized for specific scenarios, such as linear or nonlinear motion models, linear or nonlinear measurement models, or incomplete observability.

## Functions

### Filters for Object Tracking

`trackingKF` | Linear Kalman filter for object tracking |

`trackingEKF` | Extended Kalman filter for object tracking |

`trackingUKF` | Unscented Kalman filter for object tracking |

`trackingABF` | Alpha-beta filter for object tracking |

`trackingCKF` | Cubature Kalman filter for object tracking |

`trackingIMM` | Interacting multiple model (IMM) filter for object tracking |

`trackingGSF` | Gaussian-sum filter for object tracking |

`trackingPF` | Particle filter for object tracking |

`trackingMSCEKF` | Extended Kalman filter for object tracking in modified spherical coordinates (MSC) |

`ggiwphd` | Gamma Gaussian Inverse Wishart (GGIW) PHD filter |

`gmphd` | Gaussian mixture (GM) PHD filter |

### Initialization

`trackingKF`

`initcvkf` | Create constant-velocity linear Kalman filter from detection report |

`initcakf` | Create constant-acceleration linear Kalman filter from detection report |

`initvisionbboxkf` | Create constant-velocity linear Kalman filter for 2-D axis-aligned bounding box
from detection report (Since R2024a) |

`trackingEKF`

`initcvekf` | Create constant-velocity extended Kalman filter from detection report |

`initcaekf` | Create constant-acceleration extended Kalman filter from detection report |

`initctekf` | Create constant turn-rate extended Kalman filter from detection report |

`initctrvekf` | Create constant turn-rate and velocity-magnitude extended Kalman filter from
detection report (Since R2024b) |

`initsingerekf` | Singer acceleration `trackingEKF` initialization (Since R2020b) |

`trackingUKF`

`initcvukf` | Create constant-velocity unscented Kalman filter from detection report |

`initcaukf` | Create constant-acceleration unscented Kalman filter from detection report |

`initctukf` | Create constant turn-rate unscented Kalman filter from detection report |

`initctrvukf` | Create constant turn-rate and velocity-magnitude unscented Kalman filter from
detection report (Since R2024b) |

`trackingABF`

`initcvabf` | Create constant velocity tracking alpha-beta filter from detection report |

`initcaabf` | Create constant acceleration alpha-beta tracking filter from detection report |

`trackingCKF`

`initcvckf` | Create constant velocity tracking cubature Kalman filter from detection report |

`initcackf` | Create constant acceleration tracking cubature Kalman filter from detection report |

`initctckf` | Create constant turn-rate tracking cubature Kalman filter from detection report |

`trackingIMM`

`initekfimm` | Initialize object |

`initcvimm` | IMM initialization with two constant velocity models (Since R2023b) |

`trackingGSF`

`initapekf` | Constant velocity angle-parameterized EKF initialization |

`initrpekf` | Constant velocity range-parameterized EKF initialization |

`trackingPF`

`initcvpf` | Create constant velocity tracking particle filter from detection report |

`initcapf` | Create constant acceleration tracking particle filter from detection report |

`initctpf` | Create constant turn-rate tracking particle filter from detection report |

`trackingMSCEKF`

`initcvmscekf` | Constant velocity
initialization |

`ggiwphd`

`initcvggiwphd` | Create constant velocity `ggiwphd` filter |

`initcaggiwphd` | Create constant acceleration `ggiwphd` filter |

`initctggiwphd` | Create constant turn-rate `ggiwphd` filter |

`gmphd`

`initcvgmphd` | Create constant velocity `gmphd` filter |

`initcagmphd` | Create constant acceleration `gmphd` filter |

`initctgmphd` | Create constant turn-rate `gmphd` filter |

`initctrectgmphd` | Create constant turn-rate rectangular target `gmphd`
filter |

### Motion Models

#### Constant Velocity Model

`constvel` | State transition function for constant-velocity motion model |

`constveljac` | Jacobian of state transition function based on constant-velocity motion model |

`cvmeas` | Measurement function for constant-velocity motion model |

`cvmeasjac` | Jacobian of measurement function for constant-velocity motion model |

`constvelmsc` | State transition function for constant-velocity motion model in MSC frame |

`constvelmscjac` | Jacobian of state transition function based on constant-velocity motion model in MSC frame |

`cvmeasmsc` | Measurement function for constant turn-velocity motion model in MSC frame |

`cvmeasmscjac` | Jacobian of measurement using constant velocity (CV) model in MSC frame |

#### Constant Acceleration Model

`constacc` | State transition function for constant-acceleration motion model |

`constaccjac` | Jacobian of state transition function based on constant-acceleration motion model |

`cameas` | Measurement function for constant-acceleration motion model |

`cameasjac` | Jacobian of measurement function for constant-acceleration motion model |

#### Singer Acceleration Model

`singer` | State transition function for Singer acceleration motion model (Since R2020b) |

`singerjac` | Jacobian of state transition function based on Singer acceleration motion
model (Since R2020b) |

`singermeas` | Measurement function for Singer acceleration motion model (Since R2020b) |

`singermeasjac` | Jacobian of measurement function for Singer acceleration motion model (Since R2020b) |

`singerProcessNoise` | Process noise matrix for Singer acceleration model (Since R2020b) |

#### Constant Turn-Rate Model

`constturn` | State transition function for constant turn-rate and velocity-magnitude motion model |

`constturnjac` | Jacobian of state transition function based on constant turn-rate and velocity-magnitude motion |

`ctmeas` | Measurement function for constant turn-rate and velocity-magnitude motion model |

`ctmeasjac` | Jacobian of measurement function for constant turn-rate and velocity- magnitude motion model |

`ctrv` | State transition function for constant turn-rate and velocity-magnitude motion
model (Since R2024b) |

`ctrvjac` | Jacobian of state transition function based on constant turn-rate and
velocity-magnitude motion model (Since R2024b) |

`ctrvmeas` | Measurement function for constant turn-rate and velocity-magnitude motion
model (Since R2024b) |

`ctrvmeasjac` | Jacobian of measurement function for constant turn-rate and velocity-magnitude
motion model (Since R2024b) |

#### Rectangular Object Model for `gmphd`

`ctrect` | State transition function of constant turn-rate motion model for rectangular targets |

`ctrectjac` | Jacobian of state transition function for constant turn-rate motion model for rectangular targets |

`ctrectmeas` | Measurement function of constant turn-rate motion model for rectangular targets |

`ctrectmeasjac` | Jacobian of measurement function for constant turn-rate motion model for rectangular targets |

`ctrectcorners` | Corner measurements of constant turn-rate rectangular target |

#### Switch Motion Model

`switchimm` | Model conversion function for
object |

### Tracking Filter Tuning

`trackingFilterTuner` | Tracking filter tuner (Since R2022b) |

`tunableFilterProperties` | Definition of tunable properties of filter (Since R2022b) |

## Topics

**Introduction to Estimation Filters**General review of estimation filters provided in the toolbox.

**Linear Kalman Filters**Estimate and predict object motion using a Linear Kalman filter.

**Extended Kalman Filters**Estimate and predict object motion using an extended Kalman filter.

**Introduction to Out-of-Sequence Measurement Handling**Definition of out-of-sequence measurement and techniques of handling OOSM.

**Motion Model, State, and Process Noise**Introduce kinematic motion model, state, and process noise conventions.

**Generate Code with Strict Single-Precision and Non-Dynamic Memory Allocation**Introduce functions, objects, and blocks that support strict single-precision and non-dynamic memory allocation code generation in Sensor Fusion and Tracking Toolbox.

## Featured Examples

### Tracking Maneuvering Targets

Track maneuvering targets using various tracking filters. The example shows the difference between filters that use a single motion model and multiple motion models.

### Tracking with Range-Only Measurements

Illustrates the use of particle filters and Gaussian-sum filters to track a single object using range-only measurements.

### Track Objects with Wrapping Azimuth Angles and Ambiguous Range and Range Rate Measurements

Track objects when measurements wrap in angle, range, or range rate.

- Since R2022a
- Open Live Script

### Passive Ranging Using a Single Maneuvering Sensor

Illustrates how to track targets using passive angle-only measurements from a single sensor. Passive angle-only measurements contain azimuth and elevation of a target with respect to the sensor. The absence of range measurements makes the problem challenging as the targets to be tracked are fully observable only under certain conditions.

### Handle Out-of-Sequence Measurements with Filter Retrodiction

Handle out-of-sequence measurements using the retrodiction technique at the filter level.

- Since R2021b
- Open Live Script

### Smooth Trajectory Estimation of trackingIMM Filter

Smooth state estimates of a target using the smooth object function. Smoothing is a technique to refine previous state estimates using the up-to-date measurements and the state estimate information. In this example, you will learn how to improve previously corrected estimates from an Interacting Multi-Model (IMM) filter by running a backward recursion, which produces smoothed and more accurate state estimates. In the first section, you implement a smooth algorithm to smooth the trajectory of a turning car. In the remainder of this example, you perform smoothing on several highly maneuvering aircraft trajectories, taken from the Benchmark Trajectories for Multi-Object Tracking example.

- Since R2021b
- Open Live Script

### Tuning Kalman Filter to Improve State Estimation

Tune process noise and measurement noise of a constant velocity Kalman filter.

- Since R2022a
- Open Live Script

### Automatically Tune Tracking Filter for Multi-Object Tracker

Tune a tracking filter and improve the tracking performance of the tracker.

- Since R2022b
- Open Live Script

### Automatically Tune Filter to Track Maneuvering Targets

Tune a tracking filter to track maneuvering targets.

- Since R2023a
- Open Live Script

### Analyze Truth Data and Define Truth Model

Analyze recorded truth data to model the motion of truth objects and configure a filter to track them.

- Since R2024a
- Open Live Script

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)