control.lqe

control.lqe(A, G, C, QN, RN[, N])

Linear quadratic estimator design (Kalman filter) for continuous-time systems. Given the system

x &= Ax + Bu + Gw \\
y &= Cx + Du + v

with unbiased process noise w and measurement noise v with covariances

E{ww'} = QN,    E{vv'} = RN,    E{wv'} = NN

The lqe() function computes the observer gain matrix L such that the stationary (non-time-varying) Kalman filter

x_e = A x_e + B u + L(y - C x_e - D u)

produces a state estimate that x_e that minimizes the expected squared error using the sensor measurements y. The noise cross-correlation NN is set to zero when omitted.

Parameters
  • A (2D array_like) – Dynamics and noise input matrices

  • G (2D array_like) – Dynamics and noise input matrices

  • QN (2D array_like) – Process and sensor noise covariance matrices

  • RN (2D array_like) – Process and sensor noise covariance matrices

  • NN (2D array, optional) – Cross covariance matrix

Returns

  • L (2D array (or matrix)) – Kalman estimator gain

  • P (2D array (or matrix)) – Solution to Riccati equation

    A P + P A^T - (P C^T + G N) R^{-1}  (C P + N^T G^T) + G Q G^T = 0

  • E (1D array) – Eigenvalues of estimator poles eig(A - L C)

Notes

The return type for 2D arrays depends on the default class set for state space operations. See use_numpy_matrix().

Examples

>>> L, P, E = lqe(A, G, C, QN, RN)
>>> L, P, E = lqe(A, G, C, QN, RN, NN)

See also

lqr