Robust Control Toolbox™ Previous page   Next Page 
robustperf
 Provide feedback about this page

Calculates robust performance margin of uncertain multivariable system

Syntax

Description

The performance of a nominally stable uncertain system model will generally degrade for specific values of its uncertain elements. robustperf, largely included for historical purposes, computes the robust performance margin, which is one measure of the level of degradation brought on by the modeled uncertainty. The relationship between robustperf and other measures, such as robuststab and wcgain, is described in Generalized Robustness Analysis.

As with other uncertain-system analysis tools, only bounds on the performance margin are computed. The exact robust performance margin is guaranteed to lie between these upper and lower bounds.

The computation used in robustperf is a frequency domain calculation. If the input system sys is a ufrd, then the analysis is performed on the frequency grid within the ufrd. If the input system sys is a uss, then an appropriate frequency grid is generated (automatically), and the analysis performed on that frequency grid. In all discussion that follows, N denotes the number of points in the frequency grid.

The computation used in robustperf is a frequency-domain calculation. Coupled with stability of the nominal system, this frequency domain calculation determines robust performance of sys. If the input system sys is a ufrd, then the analysis is performed on the frequency grid within the ufrd. Note that the stability of the nominal system is not verified by the computation. If the input system sys is a uss, then the stability of the nominal system is first checked, an appropriate frequency grid is generated (automatically), and the analysis performed on that frequency grid. In all discussion that follows, N denotes the number of points in the frequency grid.

Basic Syntax

Suppose sys is a ufrd or uss with M uncertain elements. The results of

are such that perfmarg is a structure with the following fields:

Field
Description
LowerBound
Lower bound on robust performance margin, positive scalar.
UpperBound
Upper bound on robust performance margin, positive scalar.
CriticalFrequency
The value of frequency at which the performance degradation curve crosses the y=1/x curve. See "Generalized Robustness Analysis" in the online documentation.

perfmargunc is a struct of values of uncertain elements associated with the intersection of the performance degradation curve and the y=1/x curve. See Generalized Robustness Analysis. There are M field names, which are the names of uncertain elements of sys.

Report is a text description of the robust performance analysis results.

Example

Create a plant with a nominal model of an integrator, and include additive unmodeled dynamics uncertainty of a level of 0.4 (this corresponds to 100% model uncertainty at 2.5 rads/s).

Design a "proportional" controller K that puts the nominal closed-loop bandwidth at 0.8 rad/s. Roll off K at a frequency 25 times the nominal closed-loop bandwidth. Form the closed-loop sensitivity function.

Assess the performance margin of the closed-loop sensitivity function. Because the nominal gain of the sensitivity function is 1, and the performance degradation curve is monotonically increasing (see Generalized Robustness Analysis), the performance margin should be less than 1.

You can verify that the upper bound of the performance margin corresponds to a point on or above the y=1/x curve. First, compute the normalized size of the value of the uncertain element, and check that this agrees with the upper bound.

Compute the system gain with that value substituted, and verify that the product of the normalized size and the system gain is greater than or equal to 1.

Finally, as a sanity check, verify that the robust performance margin is less than the robust stability margin (it should always be, as described in Robustness Analysis).

While the robust stability margin is easy to describe (poles migrating from stable region into unstable region), describing the robust performance margin is less elementary. See the diagrams and figures in Generalized Robustness Analysis. Rather than finding values for uncertain elements that lead to instability, the analysis finds values of uncertain elements "corresponding to the intersection point of the performance degradation curve with a y=1/x hyperbola." This characterization, mentioned above in the description of perfmarg.CriticalFrequency and perfmargunc, is used often in the descriptions below.

Basic Syntax with Fourth Output Argument

A fourth output argument yields more specialized information, including sensitivities and frequency-by-frequency information.

In addition to the first 3 output arguments, described previously, Info is a structure with the following fields:

Field
Description
Sensitivity
A struct with M fields, field names are names of uncertain elements of sys. Values of fields are positive and contain the local sensitivity of the overall Stability Margin to that element's uncertainty range. For instance, a value of 25 indicates that if the uncertainty range is enlarged by 8%, then the stability margin should drop by about 2% (25% of 8). If the Sensitivity property of the robopt object is 'off', the values are set to NaN.
Frequency
N-by-1 frequency vector associated with analysis.
BadUncertainValues
N-by-1 cell array, with one entry for each frequency point. The kth entry Info.BadUncertainValues{k} is a struct of values of uncertain elements resulting from a robust performance analysis at frequency Info.Frequency(k).
MussvBnds
A 1-by-2 frd, with upper and lower bounds from mussv. The (1,1) entry is the µ-upper bound (corresponds to perfmarg.LowerBound) and the (1,2) entry is the µ-lower bound (for perfmarg.UpperBound).
MussvInfo
Structure of compressed data from mussv.

Options (e.g., controlling what is displayed during the computation, turning on/off the sensitivity computation, setting the step size in the sensitivity computation, and controlling the option argument used in the underlying call to mussv) is specified using the robustness analysis options robopt object. For instance, you can turn the display on and turn off the sensitivity by executing

Handling Array Dimensions

If sys has array dimensions (for example, suppose that the size of sys is rxcxd1xd2x...xdF, refer to the d1xd2x...xdF as the array dimensions) then the margin calculation is performed "pointwise" (individually, at each and every array value) and the computed answers all have array dimensions as well. Details are described below. Again, assume that there are N frequency points and M uncertain elements.

The results of

are perfmarg a structure with the following fields

Field
Description
LowerBound
d1x...xdF, lower bound on stability margin across the array dimensions.
UpperBound
d1x...xdF, upper bound on performance margin across the array dimensions. Using single indexing, for each i, the upper bound on the performance margin of sys(:,:,i) is perfmarg.UpperBound(i).
CriticalFrequency
d1x...xdF, the value of frequency at which the performance degradation curve crosses the y=1/x curve. Using single indexing, for each i, the frequency at which the performance degradation curve crosses the y=1/x curve in robust performance analysis of sys(:,:,i) is perfmarg.CriticalFrequency(i). See Generalized Robustness Analysis.

perfmargunc is a d1x...xdF structure array of values of uncertain elements, associated with the intersection of the performance degradation curve and the y=1/x curve. See "Generalized Robustness Analysis" in the online documentation. Using single indexing, for each i, the struct of values of uncertain elements for uncertain system sys(:,:,i) is perfmargunc(i).

Report is a character array, dimensions 3, 4, ..., F+2 are d1x...xdF, containing text description of the robustness analysis results at each grid in the array dimensions.

In addition to the first 3 output arguments, described previously, Info is a structure with the following fields

Field
Description
Sensitivity
A d1x...xdF struct, field names are names of uncertain elements of sys. Using single indexing notation, Sensitivity(i) contains the sensitivities of perfmarg.UpperBound(i) for the uncertain system sys(:,:,i).
Frequency
N-by-1 frequency vector associated with analysis.
BadUncertainValues
N-by-1 cell array, with one entry for each frequency point. The kth entry Info.BadUncertainValues{k} is a d1x...xdF struct of values of uncertain elements resulting from a d1x...xdF family of robust performance computations at frequency Info.Frequency(k).
MussvBnds
1x2xd1x...xdF frd, with upper and lower bounds from mussv. Using single indexing for the dimensions associated with the array dimensions, it follows that the (1,1,i) entry is the µ-upper bound (reciprocal of perfmarg.UpperBound(i)) while the (1,2,i) entry is the µ-lower bound (reciprocal of perfmarg.UpperBound(i)).
MussvInfo
Structure of compressed data from mussv.

The smallest performance margin over all array dimensions is computed min(perfmarg.UpperBound(:)). Computing

and then selecting perfmargunc(i) yields values for an uncertainty corresponding to the smallest performance margin across all array dimensions.

Algorithm

A rigorous robust performance analysis consists of two steps:

  1. Verify that the nominal system is stable;
  2. Robust performance analysis on an augmented system.

The algorithm in robustperf follows this in spirit, but might require user attention.

If sys is a uss object, then the first requirement of stability of nominal value is explicitly checked within robustperf. However, if sys is an ufrd, then the verification of nominal stability from the nominal frequency response data is not performed, and is instead assumed.

The exact performance margin is guaranteed to be no larger than UpperBound (some uncertain elements associated with this magnitude cause instability - one instance is returned in the structure perfmargunc). The instability created by perfmargunc occurs at the frequency value in CriticalFrequency.

Similarly, the exact performance margin is guaranteed to be no smaller than LowerBound.

Limitations

Because the calculation is carried out with a frequency gridding, it is possible (likely) that the true critical frequency is missing from the frequency vector used in the analysis. This is similar to the problem in robuststab. However, in comparing to robuststab, the problem in robustperf is less acute. The robust performance margin, considered a function of problem data and frequency, is typically a continuous function (unlike the robust stability margin, described in the Robust Control Toolbox™ demo called Getting Reliable Estimates of Robustness Margins in the online documentation). Hence, in robust performance margin calculations, increasing the density of the frequency grid will always increase the accuracy of the answers, and in the limit, answers arbitrarily close to the actual answers are obtainable with finite frequency grids.

See Also
loopmargin  Comprehensive analysis of feedback loop.

mussv       Calculate bounds on the Structured Singular Value (µ)

norm        Calculate LTI system norms

robopt      Create a robuststab/robustperf options object

robuststab  Calculates stability margins of uncertain systems

actual2normalized  Normalizes range of uncertain atoms

wcgain      Calculate worst-case gain of uncertain systems

wcsens      Calculate worst-case sensitivities for feedback loop

wcmargin    Calculate worst-case margins for feedback loop


 Provide feedback about this page 

Previous page robopt robuststab Next page

 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS