SingularValuePlot[lsys]
generates a plot of the singular values of the transfer function for the system lsys.
SingularValuePlot[lsys,{ωmin,ωmax}]
plots for the frequency range ωmin to ωmax.
SingularValuePlot[expr,{ω,ωmin,ωmax}]
plots expr using the variable ω.
SingularValuePlot
SingularValuePlot[lsys]
generates a plot of the singular values of the transfer function for the system lsys.
SingularValuePlot[lsys,{ωmin,ωmax}]
plots for the frequency range ωmin to ωmax.
SingularValuePlot[expr,{ω,ωmin,ωmax}]
plots expr using the variable ω.
Details and Options
- The system lsys can be TransferFunctionModel or StateSpaceModel, including descriptor and delay systems.
- For a system lsys with the corresponding transfer function
, the following expressions are plotted: -

continuous-time system 
discrete-time system with sample time 
- SingularValuePlot treats the variable ω as local, effectively using Block.
- SingularValuePlot has the same options as Plot, with the following additions and changes: [List of all options]
-
SamplingPeriod None the sampling period ScalingFunctions {"Log10","dB"} the scaling functions Tolerance 0 the tolerance in computing the singular values - The scaling functions can be specified as ScalingFunctions->{freqscale,magscale}.
- The frequency scale freqscale can be "Log10" or "Linear", which correspond to the base-10 logarithmic scale and linear scale, respectively.
- The magnitude scale magscale can be "dB" or "Absolute", which correspond to the decibel and absolute values of the magnitude, respectively.
-
AlignmentPoint Center the default point in the graphic to align with AspectRatio 1/GoldenRatio ratio of height to width Axes True whether to draw axes AxesLabel None axes labels AxesOrigin Automatic where axes should cross AxesStyle {} style specifications for the axes Background None background color for the plot BaselinePosition Automatic how to align with a surrounding text baseline BaseStyle {} base style specifications for the graphic ClippingStyle None what to draw where curves are clipped ColorFunction Automatic how to determine the coloring of curves ColorFunctionScaling True whether to scale arguments to ColorFunction ContentSelectable Automatic whether to allow contents to be selected CoordinatesToolOptions Automatic detailed behavior of the coordinates tool Epilog {} primitives rendered after the main plot EvaluationMonitor None expression to evaluate at every function evaluation Exclusions Automatic points in x to exclude ExclusionsStyle None what to draw at excluded points Filling None filling to insert under each curve FillingStyle Automatic style to use for filling FormatType TraditionalForm the default format type for text Frame False whether to put a frame around the plot FrameLabel None frame labels FrameStyle {} style specifications for the frame FrameTicks Automatic frame ticks FrameTicksStyle {} style specifications for frame ticks GridLines None grid lines to draw GridLinesStyle {} style specifications for grid lines ImageMargins 0. the margins to leave around the graphic ImagePadding All what extra padding to allow for labels etc. ImageSize Automatic the absolute size at which to render the graphic LabelingSize Automatic maximum size of callouts and labels LabelStyle {} style specifications for labels MaxRecursion Automatic the maximum number of recursive subdivisions allowed Mesh None how many mesh points to draw on each curve MeshFunctions {#1&} how to determine the placement of mesh points MeshShading None how to shade regions between mesh points MeshStyle Automatic the style for mesh points Method Automatic the method to use for refining curves PerformanceGoal $PerformanceGoal aspects of performance to try to optimize PlotHighlighting Automatic highlighting effect for curves PlotInteractivity $PlotInteractivity whether to allow interactive elements PlotLabel None overall label for the plot PlotLabels None labels to use for curves PlotLayout Automatic how to position curves PlotLegends None legends for curves PlotPoints Automatic initial number of sample points PlotRange {Full,Automatic} the range of y or other values to include PlotRangeClipping True whether to clip at the plot range PlotRangePadding Automatic how much to pad the range of values PlotRegion Automatic the final display region to be filled PlotStyle Automatic graphics directives to specify the style for each curve PlotTheme $PlotTheme overall theme for the plot PreserveImageOptions Automatic whether to preserve image options when displaying new versions of the same graphic Prolog {} primitives rendered before the main plot RegionFunction (True&) how to determine whether a point should be included RotateLabel True whether to rotate y labels on the frame SamplingPeriod None the sampling period ScalingFunctions {"Log10","dB"} the scaling functions TargetUnits Automatic units to display in the plot Ticks Automatic axes ticks TicksStyle {} style specifications for axes ticks Tolerance 0 the tolerance in computing the singular values WorkingPrecision MachinePrecision the precision used in internal computations
List of all options
Examples
open all close allBasic Examples (3)
The singular value plot of a transfer-function model:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s]]The transfer function can be specified as a matrix:
SingularValuePlot[TransferFunctionModel[{{{87.8, -86.4}, {108.2, -109.6}}, 1 + 75*s}, s], {(1/10^4), 10^2}]The singular value plot of a state-space model:
SingularValuePlot[StateSpaceModel[{{{-0.01, 0}, {0, -0.02}}, {{1, 1}, {-0.004, 0.002}}, {{0.01, 0}, {0, 1}},
{{0, 0}, {0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None], {0.001, 1}]Scope (7)
SingularValuePlot shows all the singular values:
SingularValuePlot[TransferFunctionModel[{{{2*s, 1, 1}, {2, -1 + s, s},
{1, 2, s}}, {{0.7 + s^2, 4 + s, s},
{1 + s, 2 + s, 5 + s^2},
{3 + s, 4 + s, 1}}}, s]]A one-input, two-output system:
SingularValuePlot[TransferFunctionModel[{{{1}, {1}}, {{s}, {1 + s}}}, s]]A two-input, three-output system:
SingularValuePlot[TransferFunctionModel[{{{1 + s, s},
{1 + s, 3*s}, {1, s^2}},
{{1 + s^2, 4 + s + s^2},
{1 + s^2, 5 + s}, {s,
3 + 2*s + s^2}}}, s]]SingularValuePlot[TransferFunctionModel[{{{1.7182, 3.1945}, {2, 0.4323}},
{{-2.7182 + z, -7.389 + z}, {-1 + z,
-0.1353 + z}}}, z, SamplingPeriod -> 1]]A discrete-time system specified as an expression:
SingularValuePlot[TransferFunctionModel[{{{0.6321, 4.9027*(0.2356 + z)}, {31.9452, 1.5836}},
{{-0.3678 + z, (-7.389 + z)*(-0.3678 + z)},
{-7.389 + z, -0.04978 + z}}}, z, SamplingPeriod -> 1]]SingularValuePlot[TransferFunctionModel[{{{1 + s, 2}, {1, 0.2*(10 + s)}},
{{5 + 0.2*s + s^2, 3 + s},
{s, 50 + s}}}, s], {0.1, 500}]Specify a system using its sinusoidal transfer function:
SingularValuePlot[(10/1 - 5 I w - I w^3)(| | | |
| ------ | --- | ---------------- |
| -w^2 | I w | 1 |
| 0 | 0 | 10 + 5 I w - w^2 |
| 10 I w | 0 | 1 |), w]Specify an explicit frequency range:
SingularValuePlot[(10/1 - 5 I w - I w^3)(| | | |
| ------ | --- | ---------------- |
| -w^2 | I w | 1 |
| 0 | 0 | 10 + 5 I w - w^2 |
| 10 I w | 0 | 1 |), {w, 10^-3, 10^3}]Generalizations & Extensions (1)
A singular value plot can be obtained from a transfer-function model or directly from its expression:
g = {{(10 (1 + s)/100 + 0.2 s + s^2), (1/1 + s)}, {(2.5 + s/10 + 2 s + s^2), (5 (1 + s)/6 + 5 s + s^2)}};{SingularValuePlot[TransferFunctionModel[g, s]], SingularValuePlot[g]}Options (46)
AspectRatio (3)
By default, SingularValuePlot uses a fixed height-to-width ratio for the plot:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s]]Make the height the same as the width with AspectRatio1:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> 1]AspectRatioFull adjusts the height and width to tightly fit inside other constructs:
plot = SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> Full];{Framed[Pane[plot, {75, 100}]], Framed[Pane[plot, {100, 100}]], Framed[Pane[plot, {100, 50}]]}Axes (3)
By default, Axes are drawn:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s]]Use AxesFalse to turn off axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], Axes -> False]Turn on each axis individually:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], Axes -> {True, False}], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], Axes -> {False, True}]}AxesLabel (3)
No axes labels are drawn by default:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s]]SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesLabel -> label]SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesLabel -> {label1, label2}]AxesOrigin (2)
The position of the axes is determined automatically:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s]]Specify an explicit origin for the axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesOrigin -> {20, 10}]AxesStyle (4)
Change the style for the axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesStyle -> Red]Specify the style of each axis:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesStyle -> {{Thick, Red}, {Thick, Blue}}]Use different styles for the ticks and the axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesStyle -> Green, TicksStyle -> Red]Use different styles for the labels and the axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AxesStyle -> Green, LabelStyle -> Red]CoordinatesToolOptions (3)
Display coordinates by selecting the graphic and typing a period (.):
SingularValuePlot[TransferFunctionModel[{{{2*s, 2*s, 2*s},
{2, 2, s}}, {{10 + s, 5 + s, 1 + s},
{1 + s, 3 + s, 6 + s}}}, s]]If the frequency is in radians/second, the corresponding values in hertz can be displayed as follows:
tfm = TransferFunctionModel[{{{2*s, 2*s, 2*s},
{2, 2, s}}, {{10 + s, 5 + s, 1 + s},
{1 + s, 3 + s, 6 + s}}}, s];SingularValuePlot[tfm, CoordinatesToolOptions -> ("DisplayFunction" -> Function[pt, {(pt[[1]]/2 π), pt[[2]]}])]Display coordinates of frequency and the singular values in hertz and absolute values, respectively:
tfm = TransferFunctionModel[{{{2*s, 2*s, 2*s},
{2, 2, s}}, {{10 + s, 5 + s, 1 + s},
{1 + s, 3 + s, 6 + s}}}, s];SingularValuePlot[tfm, CoordinatesToolOptions ->
("DisplayFunction" -> Function[pt, {(pt[[1]]/2 π), 10^(pt[[2]]/20)}])]GridLines (3)
tfm = TransferFunctionModel[{{{15 + 10*s, 2}, {5, 2}},
{{1 + 5*s + s^2, 2 + 3*s + s^3},
{1 + 4*s + s^2, 1 + s}}}, s];SingularValuePlot[tfm, GridLines -> Automatic]Show only the frequency grid lines:
tfm = TransferFunctionModel[{{{15 + 10*s, 2}, {5, 2}},
{{1 + 5*s + s^2, 2 + 3*s + s^3},
{1 + 4*s + s^2, 1 + s}}}, s];SingularValuePlot[tfm, GridLines -> {Automatic, None}]tfm = TransferFunctionModel[{{{15 + 10*s, 2}, {5, 2}},
{{1 + 5*s + s^2, 2 + 3*s + s^3},
{1 + 4*s + s^2, 1 + s}}}, s];SingularValuePlot[tfm, GridLines -> {NestList[10 #&, 0.01, 3], Range[-30, 30, 10]}]GridLinesStyle (1)
ImageSize (7)
Use named sizes such as Tiny, Small, Medium and Large:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> Tiny], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> Small]}Specify the width of the plot:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> 150], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> 1.5, ImageSize -> 150]}Specify the height of the plot:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> {Automatic, 150}], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> 2, ImageSize -> {Automatic, 150}]}Allow the width and height to be up to a certain size:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> UpTo[200]], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> 2, ImageSize -> UpTo[200]]}Specify the width and height for a graphic, padding with space if necessary:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> {200, 200}, Background -> StandardGray]Setting AspectRatioFull will fill the available space:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> Full, ImageSize -> {200, 200}, Background -> StandardGray]Use maximum sizes for the width and height:
{SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> {UpTo[150], UpTo[100]}], SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> 2, ImageSize -> {UpTo[150], UpTo[100]}]}Use ImageSizeFull to fill the available space in an object:
Framed[Pane[SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], ImageSize -> Full, Background -> StandardGray], {200, 100}]]Specify the image size as a fraction of the available space:
Framed[Pane[SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10 (1 + s)}, {-10 (1 + s), -100 + s}}, 100 + s^2}, s], AspectRatio -> Full, ImageSize -> {Scaled[0.5], Scaled[0.5]}, Background -> StandardGray], {200, 200}]]PlotLegends (4)
Use automatic legends for multiple singular values:
SingularValuePlot[TransferFunctionModel[{{{1, 3.2}, {1, 2.1}}, {{1.4 + s, 6 + s},
{-1 + s, 1.4 + s}}}, s], PlotLegends -> Automatic]Use a list of text for legends:
SingularValuePlot[TransferFunctionModel[{{{2*s, 1, 1}, {2, -1 + s, s},
{1, 2, s}}, {{0.7 + s^2, 4 + s, s},
{1 + s, 2 + s, 5 + s^2},
{3 + s, 4 + s, 1}}}, s], PlotLegends -> {"one", "two", "three"}]Use LineLegend to add a overall legend label:
SingularValuePlot[TransferFunctionModel[{{{2*s, 1, 1}, {2, -1 + s, s},
{1, 2, s}}, {{0.7 + s^2, 4 + s, s},
{1 + s, 2 + s, 5 + s^2},
{3 + s, 4 + s, 1}}}, s], PlotLegends -> LineLegend[{"one", "two", "three"}, LegendLabel -> "σ"]]Place the legend above the plot:
SingularValuePlot[TransferFunctionModel[{{{2*s, 1, 1}, {2, -1 + s, s},
{1, 2, s}}, {{0.7 + s^2, 4 + s, s},
{1 + s, 2 + s, 5 + s^2},
{3 + s, 4 + s, 1}}}, s], PlotLegends -> Placed[LineLegend[{"one", "two", "three"}, LegendLabel -> "σ"], Above]]PlotTheme (1)
Use a theme with simple ticks and grid lines in a bright color scheme:
tfm = TransferFunctionModel[{{{15 + 10*s, 2}, {5, 2}},
{{1 + 5*s + s^2, 2 + 3*s + s^3},
{1 + 4*s + s^2, 1 + s}}}, s]SingularValuePlot[tfm, PlotTheme -> "Business"]SingularValuePlot[tfm, PlotTheme -> "Business", PlotStyle -> 96]SamplingPeriod (2)
Systems specified as an expression are assumed to be in the continuous-time domain:
SingularValuePlot[TransferFunctionModel[{{{10, 5}, {1, 5}}, {{10 + s, 5 + s},
{s, 1}}}, s]]SingularValuePlot[TransferFunctionModel[{{{z, 0.5 - 1.5*z + z^2},
{-0.4 + z, 2}}, {{-1 + z, 0.5 - z + z^2},
{-0.6 + z, -1 + z}}}, z, SamplingPeriod -> 1]]ScalingFunctions (2)
Show frequency in the linear scale:
tfm = TransferFunctionModel[{{{3, (-1 + s)*(2 + s)}, {1, 1}},
{{1 + s, (1 + s)*(3 + s)},
{1 + s, (1 + s)*(3 + s)}}}, s]SingularValuePlot[tfm, ScalingFunctions -> {"Linear", Automatic}]Show the absolute values of the singular values:
tfm = TransferFunctionModel[{{{3, (-1 + s)*(2 + s)}, {1, 1}},
{{1 + s, (1 + s)*(3 + s)},
{1 + s, (1 + s)*(3 + s)}}}, s]SingularValuePlot[tfm, ScalingFunctions -> {Automatic, "Absolute"}]Ticks (4)
Ticks are placed automatically in each plot:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s]]Use TicksNone to not draw any tick marks:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], Ticks -> None]Place tick marks at specific positions:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], Ticks -> {{.1, 10, 900}, {-30, 0, 30}}]Draw tick marks at the specified positions with the specified labels:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], Ticks -> {{{.1, a}, {10, b}, {900, c}}, {{-30, -d}, {0, 0}, {30, d}}}]TicksStyle (4)
Specify the overall tick style, including the tick labels:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], TicksStyle -> Directive[Blue, Thick]]Specify the overall tick style for each of the axes:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], TicksStyle -> {Directive[Blue, Thick], Directive[Red, Thick]}]Specify tick marks with scaled lengths:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], Ticks -> {{{.1, a, .3}, {10, b, .26}, {900, c, .05}}, {{-30, -d, .79}, {0, 0, Automatic}, {30, d, .48}}}]Customize each tick with position, length, labeling and styling:
SingularValuePlot[TransferFunctionModel[{{{-100 + s, 10*(1 + s)},
{-10*(1 + s), -100 + s}}, 100 + s^2}, s], Ticks -> {{{.1, a, .3, Directive[Red, Thick, Dashed]}, {10, b, .26, Directive[Red, Dashed]}, {900, c, .05, Directive[Red, Thick]}}, {{-30, -d, .79, Directive[Blue, Thick, Dashed]}, {0, 0, Automatic, Directive[Blue, Thick]}, {30, d, .48, Directive[Blue, Dashed]}}}]Applications (1)
Related Guides
History
Introduced in 2010 (8.0) | Updated in 2012 (9.0) ▪ 2014 (10.0)
Text
Wolfram Research (2010), SingularValuePlot, Wolfram Language function, https://reference.wolfram.com/language/ref/SingularValuePlot.html (updated 2014).
CMS
Wolfram Language. 2010. "SingularValuePlot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/SingularValuePlot.html.
APA
Wolfram Language. (2010). SingularValuePlot. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SingularValuePlot.html
BibTeX
@misc{reference.wolfram_2026_singularvalueplot, author="Wolfram Research", title="{SingularValuePlot}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/SingularValuePlot.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_singularvalueplot, organization={Wolfram Research}, title={SingularValuePlot}, year={2014}, url={https://reference.wolfram.com/language/ref/SingularValuePlot.html}, note=[Accessed: 13-June-2026]}