abcddim (a, b, c, d)
-
Check for compatibility of the dimensions of the matrices defining
the linear system [A, B, C, D] corresponding to
or a similar discrete-time system.
If the matrices are compatibly dimensioned, then
abcddim
returns
n = number of system states, m = number of system inputs,
and p = number of system outputs. Otherwise abcddim
returns n = m = p = -1.
are (a, b, c, opt)
-
Returns the solution, x, of the algebraic Riccati equation
a' x + x a - x b x + c = 0
for identically dimensioned square matrices a, b, c.
If b (c) is not square, then the function attempts to use
b*b'
(c'*c
) instead.
Solution method: apply Laub's Schur method (IEEE Transactions on
Automatic Control, 1979) to the appropriate Hamiltonian matrix.
opt is an option passed to the eigenvalue balancing routine.
Default is "B"
.
c2d (a, b, t)
-
Converts the continuous time system described by:
into a discrete time equivalent model
via the matrix exponential assuming a zero-order hold on the input and
sample time t.
dare (a, b, c, r, opt)
-
Returns the solution, x of the discrete-time algebraic Riccati
equation
a' x a - x + a' x b (r + b' x b)^(-1) b' x a + c = 0
for matrices with dimensions:
a: n by n
b: n by m
c: n by n, symmetric positive semidefinite
r: m by m, symmetric positive definite (invertible)
If c is not square, then the function attempts to use
c'*c
instead.
Solution method: Laub's Schur method (IEEE Transactions on Automatic
Control, 1979) is applied to the appropriate symplectic matrix.
See also: Ran and Rodman, Stable Hermitian Solutions of Discrete
Algebraic Riccati Equations, Mathematics of Control, Signals and
Systems, Volume 5, Number 2 (1992).
opt is an option passed to the eigenvalue balancing routine.
The default is "B"
.
dgram (a, b)
-
Returns the discrete controllability and observability gramian for the
discrete time system described by
dgram (a, b)
returns the discrete controllability
gramian and dgram (a', c')
returns the observability
gramian.
dlqe (a, g, c, sigw, sigv [, z])
-
Linear quadratic estimator (Kalman filter) design for the discrete time
system
where w, v are zero-mean gaussian noise processes with
respective intensities
sigw = cov (w, w)
and
sigv = cov (v, v)
.
If specified, z is cov (w, v)
. Otherwise
cov (w, v) = 0
.
The observer structure is
Returns:
l is the observer gain, (A - A L C)
is stable.
m is the Ricatti equation solution.
p is the estimate error covariance after the measurement update.
e are the closed loop poles of (A - A L C)
.
dlqr (a, b, q, r [, z])
-
Linear quadratic regulator design for the discrete time system
to minimize the cost functional
J = Sum [ x' Q x + u' R u ], Z omitted
or
J = Sum [ x' Q x + u' R u +2 x' Z u ], Z included
Returns:
k is the state feedback gain, (A - B K)
is stable.
p is the solution of algebraic Riccati equation.
e are the closed loop poles of (A - B K).
dlyap (a, b)
-
Solve the discrete-time Lyapunov equation
a x a' - x + b = 0
for square matrices a, b. If b is not square, then the
function attempts to solve either
a x a' - x + b b' = 0
or
a' x a - x + b' b = 0
whichever is appropriate.
Uses Schur decomposition method as in Kitagawa, International Journal of
Control (1977); column-by-column solution method as suggested in
Hammarling, IMA Journal of Numerical Analysis, (1982).
is_controllable (a, b, tol)
-
If the pair (a, b) is controllable, then return value 1.
Otherwise, returns a value of 0.
tol is a roundoff parameter, set to
2*eps
if omitted.
Currently just constructs the controllability matrix and checks rank.
A better method is as follows (Boley and Golub, Systems and Control
Letters, 1984): Controllability is determined by applying Arnoldi
iteration with complete re-orthogonalization to obtain an orthogonal
basis of the Krylov subspace
is_observable (a, c, tol)
-
Returns 1 if the pair
(a, c)
is observable.
Otherwise, returns a value of 0.
lqe (a, g, c, sigw, sigv, z)
-
[k, p, e] = lqe (a, g, c, sigw, sigv, z)
Linear quadratic estimator (Kalman filter) design for the continuous
time system
where w, v are zero-mean gaussian noise processes with
respective intensities
sigw = cov (w, w)
sigv = cov (v, v)
z (if specified) is the cross-covariance
cov (w, v)
; the default value is
cov (w, v) = 0
.
Observer structure is dz/dt = A z + B u + k (y - C z - D u)
returns:
k is observer gain: (A - K C)
is stable.
p is solution of algebraic Riccati equation.
e is the vector of closed loop poles of (A - K C)
.
lqr (a, b, q, r, z)
-
[k, p, e] = lqr (a, b, q, r, z)
-
Linear quadratic regulator design for the continuous time system
to minimize the cost functional
z omitted or
z included
Returns:
k is state feedback gain:
(A - B K)
is stable.
p is the stabilizing solution of appropriate algebraic Riccati
equation.
e is the vector of the closed loop poles of (A - B K)
.
lyap (a, b, c)
-
Solve the Lyapunov (or Sylvester) equation via the Bartels-Stewart
algorithm (Communications of the ACM, 1972).
If
(a, b, c)
are specified, then lyap
returns the solution
of the Sylvester equation
a x + x b + c = 0
If only (a, b)
are specified, then lyap
returns the
solution of the Lyapunov equation
a' x + x a + b = 0
If b is not square, then lyap
returns the solution of either
a' x + x a + b' b = 0
or
a x + x a' + b b' = 0
whichever is appropriate.
Solves by using the Bartels-Stewart algorithm (1972).
tzero (a, b, c, d, bal)
-
Compute the transmission zeros of [A, B, C, D].
bal = balancing option (see balance); default is
"B"
.
Needs to incorporate mvzero
algorithm to isolate finite zeros;
see Hodel, Computation of System Zeros with Balancing, Linear
Algebra and its Applications, July 1993.