Main Content


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


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


[sysb,g] = balreal(sys) computes a balanced realization sysb for the stable portion of the LTI model sys. balreal handles both continuous and discrete systems. If sys is not a state-space model, it is first and automatically converted to state space using ss.

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,T,Ti] = balreal(sys) also returns the vector g containing the diagonal of the balanced Gramian, the state similarity transformation xb = Tx used to convert sys to sysb, and the inverse transformation Ti = T-1.

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.

[___] = balreal(sys,opts) computes the balanced realization using options that you specify using balredOptions. Options include offset and tolerance options for computing the stable-unstable decompositions. The options also allow you to limit the Gramian computation to particular time and frequency intervals. See balredOptions for details.


collapse all

Consider the following zero-pole-gain model, with near-canceling pole-zero pairs:

sys = zpk([-10 -20.01],[-5 -9.9 -20.1],1)
sys =
     (s+10) (s+20.01)
  (s+5) (s+9.9) (s+20.1)
Continuous-time zero/pole/gain model.

A state-space realization with balanced gramians is obtained by

[sysb,g] = balreal(sys);

The diagonal entries of the joint gramian are

ans = 1×3

    0.1006    0.0001    0.0000

This 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');

This yields the following first-order approximation of the original system.

ans =
Continuous-time zero/pole/gain model.

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


Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent sys, sysr. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent sys, sysr.

The plots shows that removing the second and third states does not have much effect on system dynamics.

Create an unstable system.

sys = tf(1,[1 0 -1])
sys =
  s^2 - 1
Continuous-time transfer function.

Apply balreal to create a balanced-gramian realization.

[sysbal,g] = balreal(sys)
sysbal =
  A = 
       x1  x2
   x1   1   0
   x2   0  -1
  B = 
   x1  -0.7071
   x2  -0.7071
  C = 
            x1       x2
   y1  -0.7071   0.7071
  D = 
   y1   0
Continuous-time state-space model.
g = 2×1


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


Consider the model


with controllability and observability Gramians Wc and Wo. The state coordinate transformation x¯=Tx produces the equivalent model


and transforms the Gramians to


The function balreal computes a particular similarity transformation T such that


See [1], [2] for details on the algorithm.

If you use the TimeIntervals or FreqIntervals options of balredOptions, then balreal bases the balanced realization on time-limited or frequency-limited controllability and observability Gramians. For information about calculating time-limited and frequency-limited Gramians, see gram and [4].


[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.

[4] Gawronski, W. and J.N. Juang. “Model Reduction in Limited Time and Frequency Intervals.” International Journal of Systems Science. Vol. 21, Number 2, 1990, pp. 349–376.

Version History

Introduced before R2006a