| Products & Services | Industries | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → Control System Toolbox |
| Contents | Index |
| Learn more about Control System Toolbox |
kalman
[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 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 yv[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) detectable
and
![]()
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.
kalmd, estim, care, dare, lqgreg, lqg, ltimodels, ss
![]() | issiso | kalmd | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |