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 gains Mx and My are defined as:
Mx updates the prediction using the new measurement .
When H = 0, and .
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 type
argument 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.
[3] Deshpande, A.S., "Bridging a Gap in Applied Kalman Filtering: Estimating Outputs When Measurements Are Correlated with the Process Noise." IEEE Control Systems Magazine, Vol. 37, Number 3, 2017, pp. 87–93.
care
| dare
| estim
| extendedKalmanFilter
| Kalman Filter | kalmd
| lqg
| lqgreg
| ss
| unscentedKalmanFilter