# extendedKalmanFilter

Create extended Kalman filter object for online state estimation

## Description

`extendedKalmanFilter`

creates an object for online state estimation
of a discrete-time nonlinear system using the first-order discrete-time extended Kalman
filter algorithm.

When you perform online state estimation, you first create the nonlinear state
transition function *f* and measurement function *h*.
You then construct the `extendedKalmanFilter`

object using these
nonlinear functions, and specify whether the noise terms are additive or nonadditive.
You can also specify the Jacobians of the state transition and measurement functions by
either generating them using automatic differentiation in the `generateJacobianFcn`

function or by writing them yourself. If you do not specify them, the software
numerically computes the Jacobians.

After you create the object, you use the `predict`

command to predict state estimate at the next time step, and
`correct`

to correct state estimates using the algorithm and real-time
data. For information about the algorithm, see Algorithms.

## Creation

### Syntax

### Description

creates an extended Kalman filter object for online state estimation of a
discrete-time nonlinear system.`obj`

= extendedKalmanFilter(`stateTransitionFcn`

,`measurementFcn`

,`initialState`

)

`stateTransitionFcn`

is a function that calculates the state of the system at time*k*, given the state vector at time*k*-1. This function is stored in the`StateTransitionFcn`

property of the object.`measurementFcn`

is a function that calculates the output measurement of the system at time*k*, given the state at time*k*. This function is stored in the`MeasurementFcn`

property of the object.`initialState`

specifies the initial value of the state estimates. This value is stored in the`State`

property of the object.

After creating the object, use the `correct`

and `predict`

functions to update state estimates and state
estimation error covariance values using a first-order discrete-time
extended Kalman filter algorithm and real-time data.

`predict`

updates`obj.State`

and`obj.StateCovariance`

with the predicted value at time step*k*using the state value at time step*k*–1.`correct`

updates`obj.State`

and`obj.StateCovariance`

with the estimated values at time step*k*using measured data at time step*k*.

additionally sets properties using name-value arguments.
If you do not specify the state transition function, measurement function,
and initial state values during creation, specify them using dot notation.
For example, for a two-state system with initial state values
`obj`

= extendedKalmanFilter(___,`Name,Value`

)`[1;0]`

, to specify these values after creation, use
`obj.State = [1;0]`

.

## Properties

## Object Functions

`correct` | Correct state and state estimation error covariance using extended or unscented Kalman filter, or particle filter and measurements |

`predict` | Predict state and state estimation error covariance at next time step using extended or unscented Kalman filter, or particle filter |

`residual` | Return measurement residual and residual covariance when using extended or unscented Kalman filter |

`clone` | Copy online state estimation object |

`generateJacobianFcn` | Generate MATLAB Jacobian functions for extended Kalman filter using automatic differentiation |

## Examples

## Algorithms

The first-order, discrete-time extended Kalman filter algorithm performs online state estimation of a discrete-time nonlinear system.

Consider a plant with states *x*, input *u*, output
*y*, process noise *w*, and measurement noise
*v*. Assume that you can represent the plant as a nonlinear
system.

The algorithm computes the state estimates $$\widehat{x}$$ of the nonlinear system using state transition and measurement functions specified by you. The software lets you specify the noise in these functions as additive or nonadditive:

**Additive Noise Terms**— The state transition and measurements equations have the following form:$$\begin{array}{l}x[k]=f(x[k-1],{u}_{s}[k-1])+w[k-1]\\ y[k]=h(x[k],{u}_{m}[k])+v[k]\end{array}$$

Here

*f*is a nonlinear state transition function that describes the evolution of states`x`

from one time step to the next. The nonlinear measurement function*h*relates`x`

to the measurements`y`

at time step`k`

.`w`

and`v`

are the zero-mean, uncorrelated process and measurement noises, respectively. These functions can also have additional input arguments that are denoted by`u`

and_{s}`u`

in the equations. For example, the additional arguments could be time step_{m}`k`

or the inputs`u`

to the nonlinear system. There can be multiple such arguments.Note that the noise terms in both equations are additive. That is,

`x(k)`

is linearly related to the process noise`w(k-1)`

, and`y(k)`

is linearly related to the measurement noise`v(k)`

.**Nonadditive Noise Terms**— The software also supports more complex state transition and measurement functions where the state*x*[*k*] and measurement*y*[*k*] are nonlinear functions of the process noise and measurement noise, respectively. When the noise terms are nonadditive, the state transition and measurements equation have the following form:$$\begin{array}{l}x[k]=f(x[k-1],w[k-1],{u}_{s}[k-1])\\ y[k]=h(x[k],v[k],{u}_{m}[k])\end{array}$$

When you perform online state estimation, you first create the nonlinear state
transition function *f* and measurement function *h*.
You then construct the `extendedKalmanFilter`

object using these
nonlinear functions, and specify whether the noise terms are additive or nonadditive.
You can also specify the Jacobians of the state transition and measurement functions by
either generating them using automatic differentiation in the `generateJacobianFcn`

function or by writing them yourself. If you do not specify them, the software
numerically computes the Jacobians.

After you create the object, you use the `predict`

command to predict state estimate at the next time step, and
`correct`

to correct state estimates using the algorithm and real-time
data. For additional details about the algorithm, see Extended and Unscented Kalman Filter Algorithms for Online State Estimation.

## Extended Capabilities

## Version History

**Introduced in R2016b**

## See Also

### Functions

`predict`

|`correct`

|`residual`

|`clone`

|`unscentedKalmanFilter`

|`kalman`

|`kalmd`

|`generateJacobianFcn`

### Blocks

### Topics

- Nonlinear State Estimation Using Unscented Kalman Filter and Particle Filter
- Generate Code for Online State Estimation in MATLAB
- State Estimation with Wrapped Measurements Using Extended Kalman Filter
- Extended and Unscented Kalman Filter Algorithms for Online State Estimation
- Validate Online State Estimation at the Command Line
- Troubleshoot Online State Estimation