Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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

`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

`modred`

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

The algorithm for the matched DC gain method is as follows. For continuous-time models

$$\begin{array}{l}\dot{x}=Ax+By\\ y=Cx+Du\end{array}$$

the state vector is partitioned into * x_{1}*,
to be kept, and

$$\begin{array}{l}\left[\begin{array}{c}{\dot{x}}_{1}\\ {\dot{x}}_{2}\end{array}\right]=\left[\begin{array}{cc}{A}_{11}& {A}_{12}\\ {A}_{21}& {A}_{22}\end{array}\right]\left[\begin{array}{c}{x}_{1}\\ {x}_{2}\end{array}\right]+\left[\begin{array}{c}{B}_{1}\\ {B}_{2}\end{array}\right]u\\ y=\left[\begin{array}{cc}{C}_{1}& {C}_{2}\end{array}\right]x+Du\end{array}$$

Next, the derivative of * x_{2}* is
set to zero and the resulting equation is solved for

$$\begin{array}{l}{\dot{x}}_{1}=\left[{A}_{11}-{A}_{12}{A}_{22}{}^{-1}{A}_{21}\right]{x}_{1}+\left[{B}_{1}-{A}_{12}{A}_{22}{}^{-1}{B}_{2}\right]u\\ y=\left[{C}_{1}-{C}_{2}{A}_{22}{}^{-1}{A}_{21}\right]x+\left[D-{C}_{2}{A}_{22}{}^{-1}{B}_{2}\right]u\end{array}$$

The discrete-time case is treated similarly by setting

$${x}_{2}[n+1]={x}_{2}[n]$$

Was this topic helpful?