({{, (RefLink[SingularValuePlot, paclet:ref/SingularValuePlot])[lsys]
generates a plot of the singular values of the transfer function for the system lsys. }, {, (RefLink[SingularValuePlot, paclet:ref/SingularValuePlot])[lsys,{(Subscript[ω, min]),(Subscript[ω, max])}]
plots for the frequency range (Subscript[ω, min]) to (Subscript[ω, max]).}, {, (RefLink[SingularValuePlot, paclet:ref/SingularValuePlot])[expr,{ω,(Subscript[ω, min]),(Subscript[ω, max])}]
plots expr using the variable ω.}})

OpenersNotesSection(Spacer1)Details and Options

The system lsys can be (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]) or (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]), including descriptor and delay systems.

For a system lsys with the corresponding transfer function g(s), the following expressions are plotted:

(RefLink[SingularValuePlot, paclet:ref/SingularValuePlot]) treats the variable ω as local, effectively using (RefLink[Block, paclet:ref/Block]).

(RefLink[SingularValuePlot, paclet:ref/SingularValuePlot]) has the same options as (RefLink[Plot, paclet:ref/Plot]), with the following additions and changes:

The scaling functions can be specified as (RefLink[ScalingFunctions, paclet:ref/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.

OpenersPrimaryExamplesSection(Spacer1)Examples  (29)

OpenersExampleSection0(Spacer1)Basic Examples  (3)

The singular value plot of a transfer-function model:

SingularValuePlot[(TransferFunctionModelFull[((-100+s)/(100+(s^2))), ((10 (1+s))/(100+(s^2))), -((10 (1+s))/(100+(s^2))), ((-100+s)/(100+(s^2))), , , ])]

The transfer function can be specified as a matrix:

SingularValuePlot[(TransferFunctionModelFull[((87.8`)/(1+75 s)), -((86.4`)/(1+75 s)), ((108.2`)/(1+75 s)), -((109.6`)/(1+75 s)), , , ]),{(1/(10^4)),(10^2)}]

The singular value plot of a state-space model:

SingularValuePlot[(StateSpaceModelFull[-0.01`, 0, 1, 1, 0, -0.02`, -0.004`, 0.002`, 0.01`, 0, 0, 0, 0, 1, 0, 0, , , ]),{0.001,1}]

OpenersExampleSection1(Spacer1)Scope  (7)

(RefLink[SingularValuePlot, paclet:ref/SingularValuePlot]) shows all the singular values:

SingularValuePlot[(TransferFunctionModelFull[((2 s)/(0.7` +(s^2))), (1/(4+s)), (1/s), (2/(1+s)), ((-1+s)/(2+s)), (s/(5+(s^2))), (1/(3+s)), (2/(4+s)), s, , , ])]

A one-input, two-output system:

SingularValuePlot[(TransferFunctionModelFull[(1/s), (1/(1+s)), , , ])]

A two-input, three-output system:

SingularValuePlot[(TransferFunctionModelFull[((1+s)/(1+(s^2))), (s/(4+s+(s^2))), ((1+s)/(1+(s^2))), ((3 s)/(5+s)), (1/s), ((s^2)/(3+2 s+(s^2))), , , ])]

A discrete-time system:

SingularValuePlot[(TransferFunctionModelFull[((1.7182`)/(-2.7182`+z)), ((3.1945`)/(-7.389`+z)), (2/(-1+z)), ((0.4323`)/(-0.1353`+z)), 1, , ])]

A discrete-time system specified as an expression:

SingularValuePlot[(TransferFunctionModelFull[((0.6321`)/(-0.3678`+z)), ((4.9027` (0.2356` +z))/((-7.389`+z) (-0.3678`+z))), ((31.9452`)/(-7.389`+z)), ((1.5836`)/(-0.04978`+z)), 1, , ])]

Explicit frequency range:

SingularValuePlot[(TransferFunctionModelFull[((1+s)/(5+0.2` s+(s^2))), (2/(3+s)), (1/s), ((0.2` (10+s))/(50+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]

OpenersExampleSection2(Spacer1)Generalizations & Extensions  (1)

(RefLink[SingularValuePlot, paclet:ref/SingularValuePlot])[(RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel])[g,var]] equals (RefLink[SingularValuePlot, paclet:ref/SingularValuePlot])[g]:

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]}

OpenersExampleSection3(Spacer1)Options  (16)

OpenersExampleSubsection0(Spacer1)CoordinatesToolOptions  (3)

Display coordinates by selecting the graphic and typing a period (.):

SingularValuePlot[(TransferFunctionModelFull[((2 s)/(10+s)), ((2 s)/(5+s)), ((2 s)/(1+s)), (2/(1+s)), (2/(3+s)), (s/(6+s)), , , ])]

If the frequency is in radians/second, the corresponding values in hertz can be displayed as follows:

tfm=(TransferFunctionModelFull[((2 s)/(10+s)), ((2 s)/(5+s)), ((2 s)/(1+s)), (2/(1+s)), (2/(3+s)), (s/(6+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=(TransferFunctionModelFull[((2 s)/(10+s)), ((2 s)/(5+s)), ((2 s)/(1+s)), (2/(1+s)), (2/(3+s)), (s/(6+s)), , , ]);

SingularValuePlot[tfm,CoordinatesToolOptions-> 
("DisplayFunction"->Function[pt,{((pt[[1]])/(2 π)),(10^((pt[[2]])/20))}])]

OpenersExampleSubsection1(Spacer1)GridLines  (3)

Show grid lines:

tfm=(TransferFunctionModelFull[((15+10 s)/(1+5 s+(s^2))), (2/(2+3 s+(s^3))), (5/(1+4 s+(s^2))), (2/(1+s)), , , ]);

SingularValuePlot[tfm,GridLines->Automatic]

Show only the frequency grid lines:

tfm=(TransferFunctionModelFull[((15+10 s)/(1+5 s+(s^2))), (2/(2+3 s+(s^3))), (5/(1+4 s+(s^2))), (2/(1+s)), , , ]);

SingularValuePlot[tfm,GridLines->{Automatic,None}]

Show specific grid lines:

tfm=(TransferFunctionModelFull[((15+10 s)/(1+5 s+(s^2))), (2/(2+3 s+(s^3))), (5/(1+4 s+(s^2))), (2/(1+s)), , , ]);

SingularValuePlot[tfm,GridLines->{NestList[10 #&,0.01,3],Range[-30,30,10]}]

OpenersExampleSubsection2(Spacer1)GridLinesStyle  (1)

Specify the grid line style:

tfm=(TransferFunctionModelFull[(1/(1.4` +s)), ((3.2`)/(6+s)), (1/(-1+s)), ((2.1`)/(1.4` +s)), , , ]);

SingularValuePlot[tfm,GridLines->Automatic,GridLinesStyle->{LightRed,LightBlue}]

OpenersExampleSubsection3(Spacer1)PlotLegends  (4)

Use automatic legends for multiple singular values:

SingularValuePlot[(TransferFunctionModelFull[(1/(1.4` +s)), ((3.2`)/(6+s)), (1/(-1+s)), ((2.1`)/(1.4` +s)), , , ]),PlotLegends->Automatic]

Use a list of text for legends:

SingularValuePlot[(TransferFunctionModelFull[((2 s)/(0.7` +(s^2))), (1/(4+s)), (1/s), (2/(1+s)), ((-1+s)/(2+s)), (s/(5+(s^2))), (1/(3+s)), (2/(4+s)), s, , , ]),PlotLegends->{"one","two","three"}]

Use (RefLink[LineLegend, paclet:ref/LineLegend]) to add a overall legend label:

SingularValuePlot[(TransferFunctionModelFull[((2 s)/(0.7` +(s^2))), (1/(4+s)), (1/s), (2/(1+s)), ((-1+s)/(2+s)), (s/(5+(s^2))), (1/(3+s)), (2/(4+s)), s, , , ]),PlotLegends->LineLegend[{"one","two","three"},LegendLabel->"σ"]]

Place the legend above the plot:

SingularValuePlot[(TransferFunctionModelFull[((2 s)/(0.7` +(s^2))), (1/(4+s)), (1/s), (2/(1+s)), ((-1+s)/(2+s)), (s/(5+(s^2))), (1/(3+s)), (2/(4+s)), s, , , ]),PlotLegends->Placed[LineLegend[{"one","two","three"},LegendLabel->"σ"],Above]]

OpenersExampleSubsection4(Spacer1)PlotTheme  (1)

Use a theme with simple ticks and grid lines in a bright color scheme:

tfm=(TransferFunctionModelFull[((15+10 s)/(1+5 s+(s^2))), (2/(2+3 s+(s^3))), (5/(1+4 s+(s^2))), (2/(1+s)), , , ]);

SingularValuePlot[tfm,PlotTheme->"Business"]

Change the color scheme:

SingularValuePlot[tfm,PlotTheme->"Business",PlotStyle->96]

OpenersExampleSubsection5(Spacer1)SamplingPeriod  (2)

Systems specified as an expression are assumed to be in the continuous-time domain:

SingularValuePlot[(TransferFunctionModelFull[(10/(10+s)), (5/(5+s)), (1/s), 5, , , ])]

A discrete-time system:

SingularValuePlot[(TransferFunctionModelFull[(z/(-1+z)), ((0.5` -1.5` z+(z^2))/(0.5` -z+(z^2))), ((-0.4`+z)/(-0.6`+z)), (2/(-1+z)), 1, , ])]

OpenersExampleSubsection6(Spacer1)ScalingFunctions  (2)

Show frequency in the linear scale:

tfm=(TransferFunctionModelFull[(3/(1+s)), (((-1+s) (2+s))/((1+s) (3+s))), (1/(1+s)), (1/((1+s) (3+s))), , , ]);

SingularValuePlot[tfm,ScalingFunctions->{"Linear",Automatic}]

Show the absolute values of the singular values:

tfm=(TransferFunctionModelFull[(3/(1+s)), (((-1+s) (2+s))/((1+s) (3+s))), (1/(1+s)), (1/((1+s) (3+s))), , , ]);

SingularValuePlot[tfm,ScalingFunctions->{Automatic,"Absolute"}]

OpenersExampleSection4(Spacer1)Applications  (1)

A plot with frequency in rotations/minute, when the Laplace variable is in radians/second:

tfm=(TransferFunctionModelFull[(1/(5-s+(s^2))), (s/(5-s+(s^2))), ((s^2)/(5-s+(s^2))), (3/(5-s+(s^2))), , , ]);

SingularValuePlot[tfm[I ((2 π)/60) f],f]

OpenersExampleSection5(Spacer1)Properties & Relations  (1)

The singular value plot and the Bode magnitude plot are the same for SISO systems:

tfm=(TransferFunctionModelFull[((1+s)/(1+s+(s^2))), , , ]);

{SingularValuePlot[tfm],BodePlot[tfm,PlotLayout->"Magnitude",Frame->False]}

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[BodePlot, paclet:ref/BodePlot])  ▪  (RefLink[NyquistPlot, paclet:ref/NyquistPlot])  ▪  (RefLink[NicholsPlot, paclet:ref/NicholsPlot])  ▪  (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Classical Analysis and Design, paclet:guide/ClassicalAnalysisAndDesign])}, {▪(RefLinkPlain[Fourier Analysis, paclet:guide/FourierAnalysis])}, {▪(RefLinkPlain[Integral Transforms, paclet:guide/IntegralTransforms])}})}})