This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.


Model order reduction


rsys = balred(sys,ORDERS)
rsys = balred(sys,ORDERS,BALDATA)
rsys = balred(___,opts)


rsys = balred(sys,ORDERS) computes a reduced-order approximation rsys of the LTI model sys. The desired order (number of states) for rsys is specified by ORDERS. You can try multiple orders at once by setting ORDERS to a vector of integers, in which case rsys is a vector of reduced-order models. balred uses implicit balancing techniques to compute the reduced- order approximation rsys. Use hsvd to plot the Hankel singular values and pick an adequate approximation order. States with relatively small Hankel singular values can be safely discarded.

When sys has unstable poles, it is first decomposed into its stable and unstable parts using stabsep, and only the stable part is approximated. Use balredOptions to specify additional options for the stable/unstable decomposition.

This command requires Control System Toolbox™ license. sys can only be an identified state-space model (idss). The reduced-order model is also an idss model.

rsys = balred(sys,ORDERS,BALDATA) uses balancing data returned by hsvd. Because hsvd does most of the work needed to compute rsys, this syntax is more efficient when using hsvd and balred jointly.

rsys = balred(___,opts) computes the model reduction using options that you specify using balredOptions. Options include offset and tolerance options for computing the stable-unstable decompositions. There also options for emphasizing particular time or frequency intervals. See balredOptions for details.


The order of the approximate model is always at least the number of unstable poles and at most the minimal order of the original model (number NNZ of nonzero Hankel singular values using an eps-level relative threshold)


collapse all

Compute a reduced-order approximation of the system given by:

Use the Offset option to exclude the pole at from the stable term of the stable/unstable decomposition.

sys = zpk([-.5 -1.1 -2.9],[-1e-6 -2 -1 -3],1);
% Create balredOptions
opt = balredOptions('Offset',.001,'StateElimMethod','Truncate');
% Compute second-order approximation
rsys = balred(sys,2,opt);

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


Reduce a high-order model with a focus on the dynamics in a particular frequency range.

Load a model and examine its frequency response.


G is a 48th-order model with several large peak regions around 5.2 rad/s, 13.5 rad/s, and 24.5 rad/s, and smaller peaks scattered across many frequencies. Suppose that for your application you are only interested in the dynamics near the second large peak, between 10 rad/s and 22 rad/s. Focus the model reduction on the region of interest to obtain a good match with a low-order approximation. Use balredOptions to specify the frequency interval for balred.

bopt = balredOptions('StateElimMethod','Truncate','FreqIntervals',[10,22]);
GLim10 = balred(G,10,bopt);
GLim18 = balred(G,18,bopt);

Examine the frequency responses of the reduced-order models. Also, examine the difference between those responses and the original response (the absolute error).

title('Bode Magnitude Plot')
legend('Original','Order 10','Order 18');
title('Absolute Error Plot')
legend('Order 10','Order 18');

With the frequency-limited energy computation, even the 10th-order approximation is quite good in the region of interest.


[1] Varga, A., "Balancing-Free Square-Root Algorithm for Computing Singular Perturbation Approximations," Proc. of 30th IEEE CDC, Brighton, UK (1991), pp. 1062-1065.

See Also

| |


Introduced before R2006a

Was this topic helpful?