Eliminate states from state-space models

`rsys = modred(sys,elim)`

rsys = modred(sys,elim,'method')

reduces the order of a continuous or discrete state-space model `rsys`

= modred(`sys`

,elim)`sys`

by
eliminating the states found in the vector `elim`

.
The full state vector *X* is partitioned as *X* =
[*X1*;*X2*] where *X1* is
the reduced state vector and *X2* is discarded.

`elim`

can be a vector of indices or a logical
vector commensurate with *X* where true values mark
states to be discarded. This function is usually used in conjunction
with `balreal`

. Use `balreal`

to
first isolate states with negligible contribution to the I/O response.
If `sys`

has been balanced with `balreal`

and
the vector `g`

of Hankel singular values has M small
entries, you can use `modred`

to eliminate the corresponding
M states. For example:

[sys,g] = balreal(sys) % Compute balanced realization elim = (g<1e-8) % Small entries of g are negligible states rsys = modred(sys,elim) % Remove negligible states

`rsys = modred(sys,elim,'method')`

also specifies
the state elimination method. Choices for `'method'`

include

`'MatchDC'`

(default): Enforce matching DC gains. The state-space matrices are recomputed as described in Algorithms.`'Truncate'`

: Simply delete*X2*.

The `'Truncate'`

option tends to produces a
better approximation in the frequency domain, but the DC gains are
not guaranteed to match.

If the state-space model `sys`

has been balanced
with `balreal`

and the grammians have *m* small
diagonal entries, you can reduce the model order by eliminating the
last *m* states with `modred`

.

With the matched DC gain method, *A*_{22} must
be invertible in continuous time, and *I* – *A*_{22} must
be invertible in discrete time.

Was this topic helpful?