# What are the Singular Values of a dynamic system and how are they calculated in the *sigma* function in Matlab?

According to Matlab documentation:

sigma plots the singular values of the frequency response of a dynamic system.

bode creates a Bode plot of the frequency response of a dynamic system.

I am reasonably familiar with Bode plots and dynamic systems but I don't understand what the singular values of the system are or how they are calculated. Are they related to the magnitudes of the system (which can be outputted by bode)?

For reference, I have a discrete state-space system which I am attempting to model as a reduced order system. One of the papers I have been using to accomplish this mentions using the sigma function to compare the two models. The paper is 'Dynamic Mode Decomposition with Control' by J.L.Proctor.

Any help with understanding singular values or this sigma function would be appreciated.

• IMO Singular values and the Moore-Penrose pseudo-inverse should really be covered in Linear Algebra courses, but often they are not. The singular value decomposition of any (not necessarily square!) matrix $A$ is $A = U \Sigma V^T$, where $U$ and $V$ are orthogonal matrices and $\Sigma$ is a diagonal matrix of the Singular values, which are always $>= 0$. $U$ and $V$ are the eigenvectors of the square matrices $A^TA$ and $AA^T$. Numerical algorithms for calculating the SVD are similar to algorithms for finding eigenvalues and vectors. See linear algebra textbooks for more detail. Commented Mar 8, 2017 at 13:22
• Thanks for answering. Do you know how this relates to the sigma function? As in, which matrix is being decomposed when it says 'singular values of the frequency response of a dynamic system.'
– Joe
Commented Mar 8, 2017 at 13:29

For a MIMO system $y(s) = G(s)d(s)$, with $m$ inputs and $l$ outputs. Consider a fixed frequency $\omega$ where $G(j\omega)$ is a constant $l \times m$ complex matrix. For the sake of simplicity the matrix $G(j\omega)$ is written as $G$.

In short, the singular value decomposition (SVD) states that any matrix $G$ may be decomposed into an input rotation $V$, a scaling matrix $\Sigma$ and an output rotation $U$

$$G = U \Sigma V^H$$ where $V^H$ denotes the conjugate transpose or Hermitian transpose of matrix $V$. Furthermore,

• $U$ is an $l \times l$ unitary matrix of output singular vectors, $u_i$;
• $V$ is an $m \times m$ unitary matrix of input singular vectors, $v_i$;
• $\Sigma$ is an $l \times m$ diagonal matrix with $k = \min\lbrace l,m\rbrace$ non-negative singular values, $\sigma_i$.

The gain of matrix $G$ in the $i$'th direction (from input $v_i$ to output $u_i$) is given by the singular value $\sigma_i$.

Hence, for a SISO system, the singular value $\sigma$ describes the amplification from the input to the output on frequency $\omega$. This information can also be obtained from the Bode magnitude response.

That is why the MATLAB documentation of the function sigma states:

The singular value response of a SISO system is identical to its Bode magnitude response.

• Thanks. If anyone is interested, I wrote a Python script to do this calculation here.
– Bill
Commented Sep 5, 2022 at 0:54