## Documentation Center |

Kalman filter design, Kalman estimator

`[kest,L,P] = kalman(sys,Qn,Rn,Nn)[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type)`

`kalman ` designs a Kalman
filter or Kalman state estimator given a state-space model of the
plant and the process and measurement noise covariance data. The Kalman
estimator provides the optimal solution to the following continuous
or discrete estimation problems.

**Continuous-Time Estimation**

Given the continuous plant

with known inputs *u*, white process noise *w*,
and white measurement noise *v* satisfying

construct a state estimate
that
minimizes the steady-state error covariance

The optimal solution is the Kalman filter with equations

The filter gain *L* is determined by solving
an algebraic Riccati equation to be

where

and *P* solves the
corresponding algebraic Riccati equation.

The estimator uses the known inputs *u* and
the measurements *y* to generate the output and state
estimates
and
. Note that
estimates the
true plant output

**Discrete-Time Estimation**

Given the discrete plant

and the noise covariance data

The estimator has the following state equation:

The gain matrix *L* is
derived by solving a discrete Riccati equation to be

where

There are two variants of discrete-time Kalman estimators:

The current estimator generates output estimates and state estimates using all available measurements up to . This estimator has the output equation

where the innovation gain

*M*is defined as*M*updates the prediction using the new measurement .The delayed estimator generates output estimates and state estimates using measurements only up to

*y*[_{v}*n-1*]. This estimator is easier to implement inside control loops and has the output equation

`[kest,L,P] = kalman(sys,Qn,Rn,Nn)` creates
a state-space model `kest` of the Kalman estimator
given the plant model `sys` and the noise covariance
data `Qn`, `Rn`, `Nn` (matrices *Q*, *R*, *N* described
in Description). `sys` must
be a state-space model with matrices
.

The resulting estimator `kest` has inputs
and outputs
(or their discrete-time
counterparts). You can omit the last input argument `Nn` when *N
= 0*.

The function `kalman` handles
both continuous and discrete problems and produces a continuous estimator
when `sys` is continuous and a discrete estimator
otherwise. In continuous time, `kalman` also returns
the Kalman gain `L` and the steady-state error covariance
matrix `P`. `P` solves the associated
Riccati equation.

`[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)` handles
the more general situation when

Not all outputs of

`sys`are measured.The disturbance inputs

*w*are not the last inputs of`sys`.

The index vectors `sensors` and `known` specify
which outputs *y* of `sys` are measured
and which inputs *u* are known (deterministic). All
other inputs or `sys` are assumed stochastic.

`[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type)` specifies
the estimator type for discrete-time plants `sys`.
The string `type` is either `'current'` (default)
or `'delayed'`. For discrete-time plants, `kalman` returns
the estimator and innovation gains *L* and *M* and
the steady-state error covariances

See LQG Design
for the x-Axis and Kalman
Filtering for examples that use the `kalman` function.

The plant and noise data must satisfy:

(

*C*,*A*) detectableand

has no uncontrollable mode on the imaginary axis (or unit circle in discrete time) with the notation

[1] Franklin, G.F., J.D. Powell, and M.L.
Workman, *Digital Control of Dynamic Systems*,
Second Edition, Addison-Wesley, 1990.

[2] Lewis, F., *Optimal Estimation*,
John Wiley & Sons, Inc, 1986.

Was this topic helpful?