# modred

Eliminate states from state-space models

## Syntax

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

## Description

`rsys = modred(sys,elim)` reduces the order of a continuous or discrete state-space model `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`.

## Examples

collapse all

Consider the following continuous fourth-order model.

`$h\left(s\right)=\frac{{s}^{3}+11{s}^{2}+36s+26}{{s}^{4}+14.6{s}^{3}+74.96{s}^{2}+153.7s+99.65}.$`

To reduce its order, first compute a balanced state-space realization with `balreal`.

```h = tf([1 11 36 26],[1 14.6 74.96 153.7 99.65]); [hb,g] = balreal(h);```

Examine the gramians.

`g'`
```ans = 1×4 0.1394 0.0095 0.0006 0.0000 ```

The last three diagonal entries of the balanced gramians are relatively small. Eliminate these three least-contributing states with `modred`, using both matched-DC-gain and direct-deletion methods.

```hmdc = modred(hb,2:4,'MatchDC'); hdel = modred(hb,2:4,'Truncate');```

Both `hmdc` and `hdel` are first-order models. Compare their Bode responses against that of the original model.

`bodeplot(h,'-',hmdc,'x',hdel,'*')`

The reduced-order model `hdel` is clearly a better frequency-domain approximation of `h`. Now compare the step responses.

`stepplot(h,'-',hmdc,'-.',hdel,'--')`

While `hdel` accurately reflects the transient behavior, only `hmdc` gives the true steady-state response.

## Algorithms

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

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

the state vector is partitioned into x1, to be kept, and x2, to be eliminated.

`$\begin{array}{l}\left[\begin{array}{c}{\stackrel{˙}{x}}_{1}\\ {\stackrel{˙}{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 x2 is set to zero and the resulting equation is solved for x1. The reduced-order model is given by

`$\begin{array}{l}{\stackrel{˙}{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}\left[n+1\right]={x}_{2}\left[n\right]$`