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.
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
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
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
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 of 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
The plant and noise data must satisfy:
has no uncontrollable mode on the imaginary axis (or unit circle in discrete time) with the notation
 Franklin, G.F., J.D. Powell, and M.L. Workman, Digital Control of Dynamic Systems, Second Edition, Addison-Wesley, 1990.
 Lewis, F., Optimal Estimation, John Wiley & Sons, Inc, 1986.