## Documentation Center |

Gramian-based input/output balancing of state-space realizations

`[sysb, g]
= balreal(sys) `

[sysb, g] = balreal(sys,'AbsTol',ATOL,'RelTol',RTOL,'Offset',ALPHA)

[sysb, g] = balreal(sys, condmax)

[sysb, g, T, Ti] = balreal(sys)

[sysb, g] = balreal(sys, opts)

`[sysb, g]
= balreal(sys) ` computes a
balanced realization

For stable systems, `sysb` is an equivalent
realization for which the controllability and observability Gramians
are equal and diagonal, their diagonal entries forming the vector
G of Hankel singular values. Small entries in G indicate states that
can be removed to simplify the model (use `modred` to
reduce the model order).

If `sys` has unstable poles, its stable part
is isolated, balanced, and added back to its unstable part to form `sysb`.
The entries of `g` corresponding to unstable modes
are set to `Inf`.

`[sysb, g]
= balreal(sys,'AbsTol',ATOL,'RelTol',RTOL,'Offset',ALPHA)` specifies
additional options for the stable/unstable decomposition. See the

`[sysb, g]
= balreal(sys, condmax)` controls
the condition number of the stable/unstable decomposition. Increasing

` [sysb, g, T, Ti]
= balreal(sys) ` also
returns the vector

If the system is normalized properly, the diagonal `g` of
the joint gramian can be used to reduce the model order. Because `g` reflects
the combined controllability and observability of individual states
of the balanced model, you can delete those states with a small `g(i)` while
retaining the most important input-output characteristics of the original
system. Use `modred` to perform
the state elimination.

`[sysb, g]
= balreal(sys, opts)` computes
the balanced realization using the options specified in the

Consider the zero-pole-gain model

sys = zpk([-10 -20.01],[-5 -9.9 -20.1],1) Zero/pole/gain: (s+10) (s+20.01) ---------------------- (s+5) (s+9.9) (s+20.1)

A state-space realization with balanced gramians is obtained by

[sysb,g] = balreal(sys)

The diagonal entries of the joint gramian are

g' ans = 0.1006 0.0001 0.0000

which indicates that the last two states of `sysb` are
weakly coupled to the input and output. You can then delete these
states by

sysr = modred(sysb,[2 3],'del')

to obtain the following first-order approximation of the original system.

zpk(sysr) Zero/pole/gain: 1.0001 -------- (s+4.97)

Compare the Bode responses of the original and reduced-order models.

bode(sys,'-',sysr,'x')

Create this unstable system:

sys1=tf(1,[1 0 -1]) Transfer function: 1 ------- s^2 - 1

Apply `balreal` to create a balanced gramian
realization.

[sysb,g]=balreal(sys1) a = x1 x2 x1 1 0 x2 0 -1 b = u1 x1 0.7071 x2 0.7071 c = x1 x2 y1 0.7071 -0.7071 d = u1 y1 0 Continuous-time model. g = Inf 0.2500

The unstable pole shows up as `Inf` in vector
g.

[1] Laub, A.J., M.T. Heath, C.C. Paige, and
R.C. Ward, "Computation of System Balancing Transformations and Other
Applications of Simultaneous Diagonalization Algorithms," *IEEE ^{®} Trans.
Automatic Control*, AC-32 (1987), pp. 115-122.

[2] Moore, B., "Principal Component Analysis
in Linear Systems: Controllability, Observability, and Model Reduction," *IEEE Transactions
on Automatic Control*, AC-26 (1981), pp. 17-31.

[3] Laub, A.J., "Computation of Balancing Transformations," *Proc.
ACC*, San Francisco, Vol.1, paper FA8-E, 1980.

`gram` | `hsvdOptions` | `modred` | `ss`

Was this topic helpful?