balredOptions

Create option set for model order reduction

Syntax

opts = balredOptions
opts = balredOptions('OptionName', OptionValue)

Description

opts = balredOptions returns the default option set for the balred command.

opts = balredOptions('OptionName', OptionValue) accepts one or more comma-separated name/value pairs. Specify OptionName inside single quotes.

Input Arguments

Name-Value Pair Arguments

'FreqIntervals'

Frequency intervals for computing frequency-limited Hankel singular values, specified as a matrix with two columns. Each row specifies a frequency interval [fmin fmax], where fmin and fmax are nonnegative frequencies, expressed in the frequency unit of the model. When identifying low-energy states to truncate, the software computes state contributions to system behavior in these frequency ranges only. For example:

  • To restrict the computation to the range between 3 rad/s and 15 rad/s, assuming the frequency unit of the model is rad/s, set FreqIntervals to [3 15].

  • To restrict the computation to two frequency intervals, 3-15 rad/s and 40-60 rad/s, use [3 15; 40 60].

  • To specify all frequencies below a cutoff frequency fcut, use [0 fcut].

  • To specify all frequencies above the cutoff, use [fcut Inf] in continuous time, or [fcut pi/Ts] in discrete time, where Ts is the sample time of the model.

The default value, [], imposes no frequency limitation and is equivalent to [0 Inf] in continuous time or [0 pi/Ts] in discrete time. However, if you specify a TimeIntervals value other than [], then this limit overrides FreqIntervals = []. If you specify both a TimeIntervals value and a FreqIntervals value, then the computation uses the union of these intervals.

If StateElimMethod = 'MatchDC' (the default value), then balred attempts to match the DC gain of the original and reduced models, even if the specified frequency intervals exclude 0. This behavior might reduce the quality of the match in the specified intervals. To improve the match within frequency intervals that exclude 0, set StateElimMethod = 'Truncate'.

If both the frequency and time intervals do include DC, you can still set StateElimMethod = 'Truncate' to improve the match at other frequencies and times.

Default: []

'TimeIntervals'

Time intervals for computing time-limited Hankel singular values, specified as a matrix with two columns. Each row specifies a time interval [tmin tmax], where tmin and tmax are nonnegative times, expressed in the time unit of the model. When identifying low-energy states to truncate, the software computes state contributions to the system’s impulse response in these time intervals only. For example:

  • To restrict the computation to the range between 3 s and 15 s, assuming the time unit of the model is seconds, set TimeIntervals to [3 15].

  • To restrict the computation to two time intervals, 3-15 s and 40-60 s, use [3 15; 40 60].

  • To specify all times from zero up to a cutoff time tcut, use [0 tcut]. To specify all times after the cutoff, use [tcut Inf].

The default value, [], imposes no time limitation and is equivalent to [0 Inf]. However, if you specify a FreqIntervals value other than [], then this limit overrides Timeintervals = []. If you specify both a TimeIntervals value and a FreqIntervals value, then the computation uses the union of these intervals.

If StateElimMethod = 'MatchDC' (the default value), then balred attempts to match the DC gain of the original and reduced models, even if the specified time intervals exclude Inf. This behavior might reduce the quality of the match in the specified intervals. To improve the match within time intervals that exclude Inf, set StateElimMethod = 'Truncate'.

If both the frequency and time intervals do include DC, you can still set StateElimMethod = 'Truncate' to improve the match at other frequencies and times.

Default: []

'StateElimMethod'

State elimination method. Specifies how to eliminate the weakly coupled states (states with smallest Hankel singular values). Specified as one of the following values:

'MatchDC'Discards the specified states and alters the remaining states to preserve the DC gain.
'Truncate'Discards the specified states without altering the remaining states. This method tends to product a better approximation in the frequency domain, but the DC gains are not guaranteed to match.

Default: 'MatchDC'

'AbsTol, RelTol'

Absolute and relative error tolerance for stable/unstable decomposition. Positive scalar values. For an input model G with unstable poles, balred first extracts the stable dynamics by computing the stable/unstable decomposition G → GS + GU. The AbsTol and RelTol tolerances control the accuracy of this decomposition by ensuring that the frequency responses of G and GS + GU differ by no more than AbsTol + RelTol*abs(G). Increasing these tolerances helps separate nearby stable and unstable modes at the expense of accuracy. See stabsep for more information.

Default: AbsTol = 0; RelTol = 1e-8

'Offset'

Offset for the stable/unstable boundary. Positive scalar value. In the stable/unstable decomposition, the stable term includes only poles satisfying

  • Re(s) < -Offset * max(1,|Im(s)|) (Continuous time)

  • |z| < 1 - Offset (Discrete time)

Increase the value of Offset to treat poles close to the stability boundary as unstable.

Default: 1e-8

For additional information on the options and how to use them, see the balred reference page.

Examples

collapse all

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

G(s)=(s+0.5)(s+1.1)(s+2.9)(s+10-6)(s+1)(s+2)(s+3).

Create the model.

sys = zpk([-.5 -1.1 -2.9],[-1e-6 -2 -1 -3],1);

Exclude the pole at s=10-6 from the stable term of the stable/unstable decomposition. To do so, set the Offset option of balredOptions to a value larger than the pole you want to exclude.

opt = balredOptions('Offset',.001,'StateElimMethod','Truncate');

Compute a second-order approximation.

rsys = balred(sys,2,opt);

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

bodeplot(sys,rsys,'r--')

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

Load a model and examine its frequency response.

load('highOrderModel.mat','G')
bodeplot(G)

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

subplot(2,1,1);
bodemag(G,GLim10,GLim18,logspace(0.5,1.5,100));
title('Bode Magnitude Plot')
legend('Original','Order 10','Order 18');
subplot(2,1,2);
bodemag(G-GLim10,G-GLim18,logspace(0.5,1.5,100));
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.

Compatibility Considerations

expand all

Behavior changed in R2017b

Introduced in R2010a