Discrete Kalman Filter
Discrete Kalman Filter
in which w is called process noise or disturbance, v is called measurement noise, these signals are
uncertainties (we don’t know the values, even after they have appeared).
Due to the uncertainties, the output that we measured, denoted ŷ is not the true output
y, hence the job of state observation - computing the estimated state x̂ - depends also on the
characteristic of w and v.
We assume that w and v are independent zero-mean, Gaussian white noise, with covariances:
E(w[k]w[k]T ) = Qw [k], E(v[k]v[k]T ) = Rv [k]. In case of stationary noises, Qw and Rv are
constants.
We use the Luenberger observer for estimating states:
In 1961, Kalman has published his work on state estimation, which is then named Kalman
filter, the target is to minimize the mean square error:
n
X
J[k] = E(e1 [k]2 + · · · + en [k]2 ) = E(ej [k]2 ) (4.24)
j=1
Note that the sum of diagonal entries of a square matrix is called the trace of the matrix, and
it is a linear operator on the matrices, i.e. following properties hold:
tr(A) = tr(AT )
Xn
tr(A) = λi ,
i=1
Note that w, v and e are uncorrelated, hence the covariances of cross-terms are zeros.
Denote R [k] = (Rv [k] + CP[k]CT ), we obtain further:
Hence:
Since the matrix in the third term is positive semidefinite, its mininum trace would be 0 when
we choose L = AP[k]CT R [k]−1 . This leads to the recursive Kalman filter:
where
When the system is invariant, the noises are stationary, and if P[k] converges, the observer gain
is constant:
where P satisfies:
Equation (4.30) is the discrete algebraic Riccati equation (DARE), see (3.62). In MATLAB,
the command dlqe will solve this DARE and also computes the gain L as in (4.29).