Main Content

Create unscented Kalman filter object for online state estimation

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

= unscentedKalmanFilter(`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. `MeasurementFcn`

is
a function that calculates the output measurement of the system at
time *k*, given the state at time *k*. `InitialState`

specifies
the initial value of the state estimates.

After creating the object, use the `correct`

and `predict`

commands to update state estimates
and state estimation error covariance values using a discrete-time
unscented Kalman filter algorithm and real-time data.

specifies
additional attributes of the unscented Kalman filter object using
one or more `obj`

= unscentedKalmanFilter(`StateTransitionFcn`

,`MeasurementFcn`

,`InitialState`

,`Name,Value`

)`Name,Value`

pair arguments.

creates
an unscented Kalman filter object using the specified state transition
and measurement functions. Before using the `obj`

= unscentedKalmanFilter(`StateTransitionFcn`

,`MeasurementFcn`

)`predict`

and `correct`

commands,
specify the initial state values using dot notation. For example,
for a two-state system with initial state values `[1;0]`

,
specify `obj.State = [1;0]`

.

specifies
additional attributes of the unscented Kalman filter object using
one or more `obj`

= unscentedKalmanFilter(`StateTransitionFcn`

,`MeasurementFcn`

,`Name,Value`

)`Name,Value`

pair arguments. Before
using the `predict`

and `correct`

commands,
specify the initial state values using `Name,Value`

pair
arguments or dot notation.

creates
an unscented Kalman filter object with properties specified using
one or more `obj`

= unscentedKalmanFilter(`Name,Value`

)`Name,Value`

pair arguments. Before
using the `predict`

and `correct`

commands,
specify the state transition function, measurement function, and initial
state values using `Name,Value`

pair arguments
or dot notation.

`unscentedKalmanFilter`

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

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 `unscentedKalmanFilter`

object
using these nonlinear functions, and specify whether the noise terms
are additive or nonadditive. After you create the object, you use
the `predict`

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

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

You can use the following commands with `unscentedKalmanFilter`

objects:

Command | Description |
---|---|

`correct` | Correct the state and state estimation error covariance
at time step |

`predict` | Predict the state and state estimation error covariance at time the next time step. |

`residual` | Return the difference between the actual and predicted measurements. |

`clone` | Create another object with the same object property values. Do
not create additional objects using syntax |

For `unscentedKalmanFilter`

object properties,
see Properties.

`clone`

|`correct`

|`extendedKalmanFilter`

|`predict`

|`residual`

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