Main Content


Plot worst-case gain of uncertain system



wcsigmaplot(usys) plots the nominal and worst-case gains of the uncertain system usys as a function of frequency. For multi-input, multi-output (MIMO) systems, gain refers to the largest singular value of the frequency response matrix. (See sigma for more information about singular values.) The plot includes:

  • Nominal — Nominal gain of usys.

  • Worst perturbation — The response falling within the uncertainty of usys that has the highest peak gain. This curve corresponds to the wcu output argument of wcgain.

  • Worst-case gain (lower bound) — The lowest possible worst-case gain at each frequency.

  • Worst-case gain (upper bound) — The highest possible gain within the uncertainty at each frequency. This curve represents the envelope produced by finding the highest possible gain at each frequency.

  • Sampled Uncertainty — Responses randomly sampled from usys.


wcsigmaplot(usys,w) focuses the plot on the frequencies specified by w.

  • If w is a cell array of the form {wmin,wmax}, then wcsigmaplot plots the worst-case gains in the range {wmin,wmax}.

  • If w is an array of frequencies, then wcsigmaplot plots the worst-case gains at each frequency in the array.


wcsigmaplot(___,opts) specifies additional options for the computation. Use wcOptions to create opts.


collapse all

Plot the worst-case gain of the following system:


The uncertain parameter a = 2 ± 1.

a = ureal('a',2);
usys = tf([1 3 0],[1 2 a]);

The Worst perturbation curve identifies the single response within the uncertainty that yields the highest gain at any frequency. This perturbation corresponds to the wcu output of wcgain.

The Worst-case gain curves show the lower and upper bounds on the worst-case gain at each frequency. For any perturbation within the specified uncertainty range, the principal gains (singular values) of the perturbed system lie below the Worst-case gain (upper bound) curve. In other words, this curve is the envelope produced by finding the highest gain within the uncertainty at each frequency. For this system, the lower and upper bounds are close enough to appear identical on the plot. (See wcgain for more information about these bounds.)

Focus the plot on the region between 0.1 and 10 rad/s.

w = {0.1 10};

Examine the effect on the worst-case response of increasing the uncertainty range. To do this without changing the uncertainty specified in usys, use the ULevel option of wcOptions. This option scales the normalized uncertainty by the factor you specify. For example, examine the worst-case response a 50% greater uncertainty range.

opts = wcOptions('ULevel',1.5);

The plot shows that increasing the uncertainty range substantially increases the worst-case gain at low frequencies.

Input Arguments

collapse all

Dynamic system with uncertainty, specified as a uss, ufrd, genss, or genfrd model that contains uncertain elements.

For genss or genfrd models, wcsigmaplot uses the current value of any tunable blocks and folds them into the known (not uncertain) part of the model.

Frequencies at which to plot worst-case gains, specified as the cell array {wmin,wmax} or as a vector of frequency values.

  • If w is a cell array of the form {wmin,wmax}, then the function plots the worst-case gains at frequencies ranging between wmin and wmax.

  • If w is a vector of frequencies, then the function plots the worst-case gains at each specified frequency. For example, use logspace to generate a row vector with logarithmically spaced frequency values.

Specify frequencies in units of rad/TimeUnit, where TimeUnit is the TimeUnit property of the model.

Options for worst-case computation, specified as an object you create with wcOptions. Setting certain options for mussv can improve the results of the worst-case calculation. See wcOptions for more information.

Example: wcOptions('ULevel',2,'MussvOptions','m3')


wcsigmaplot uses wcgain to compute the worst-case gains. Use the opts argument to set options for the wcgain algorithm.

wcsigmaplot uses usample to compute the Sampled Uncertainty curves.

Version History

Introduced in R2016b

expand all