control.lqe
- control.lqe(A, G, C, QN, RN[, NN])[source]
Continuous-time linear quadratic estimator (Kalman filter).
Given the continuous-time system
with unbiased process noise w and measurement noise v with covariances
The lqe() function computes the observer gain matrix L such that the stationary (non-time-varying) Kalman filter
produces a state estimate x_e that minimizes the expected squared error using the sensor measurements y. The noise cross-correlation
NN
is set to zero when omitted.The function can be called with either 3, 4, 5, or 6 arguments:
L, P, E = lqe(sys, QN, RN)
L, P, E = lqe(sys, QN, RN, NN)
L, P, E = lqe(A, G, C, QN, RN)
L, P, E = lqe(A, G, C, QN, RN, NN)
where
sys
is anLTI
object, andA
,G
,C
,QN
,RN
, andNN
are 2D arrays or matrices of appropriate dimension.- Parameters
- A, G, C2D array_like
Dynamics, process noise (disturbance), and output matrices.
- sys
StateSpace
orTransferFunction
Linear I/O system, with the process noise input taken as the system input.
- QN, RN2D array_like
Process and sensor noise covariance matrices.
- NN2D array, optional
Cross covariance matrix. Not currently implemented.
- methodstr, optional
Set the method used for computing the result. Current methods are ‘slycot’ and ‘scipy’. If set to None (default), try ‘slycot’ first and then ‘scipy’.
- Returns
- L2D array
Kalman estimator gain.
- P2D array
Solution to Riccati equation:
- E1D array
Eigenvalues of estimator poles eig(A - L C).
Notes
If the first argument is an LTI object, then this object will be used to define the dynamics, noise and output matrices. Furthermore, if the LTI object corresponds to a discrete-time system, the
dlqe
function will be called.Examples
>>> L, P, E = lqe(A, G, C, QN, RN) >>> L, P, E = lqe(A, G, C, Q, RN, NN)