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]$