# LMIs in Control/pages/Minimum Singular Value of a Complex Matrix

LMIs in Control/pages/Minimum Singular Value of a Complex Matrix

Minimum Singular Value of a Complex Matrix

## The System

Consider ${\displaystyle A\in \mathbb {C} ^{n\times m}}$  as well as ${\displaystyle \gamma }$ . A minimum singular value of a matrix ${\displaystyle A}$  is greater than ${\displaystyle \gamma }$  if and only if ${\displaystyle AA^{H}>\gamma ^{2}I}$  or ${\displaystyle A^{H}A>\gamma ^{2}I}$ , where ${\displaystyle A^{H}}$  is the conjugate transpose or Hermitian transpose of the matrix ${\displaystyle A}$ . the inequality used depends on the size of matrix ${\displaystyle A}$ .

## The Data

The matrix ${\displaystyle A}$  is the only data required.

## The LMI: Minimum Singular Value of a Complex Matrix

The following LMIs can be constructed depending on the size of ${\displaystyle A}$ :

if ${\displaystyle A\in \mathbb {C} ^{n\times m}}$ , where ${\displaystyle n\leq m}$ , then:

{\displaystyle {\begin{aligned}{\bar {\sigma }}(A)>\gamma \\AA^{H}>\gamma ^{2}I\end{aligned}}}

Else if ${\displaystyle n\geq m}$ , then:

{\displaystyle {\begin{aligned}{\bar {\sigma }}(A)>\gamma \\A^{H}A>\gamma ^{2}I\end{aligned}}}

## Conclusion:

The results from this LMI will give the maximum complex value of the matrix ${\displaystyle A}$ :

{\displaystyle {\begin{aligned}{\bar {\sigma }}(A)>\gamma \end{aligned}}}

This answer can also be proven using the following solution. Note that this solution only works if the matrix ${\displaystyle A}$  is a square, invertible matrix: ${\displaystyle \sigma _{min}=1/||A^{-1}||_{2}}$ .

## Implementation

% Minimum Singular Value of Complex Matrix
% -- EXAMPLE --

%Clears all variables
clear; clc; close all;

%SDPVAR variables
gam = sdpvar(1);

%Example Matrix A
A = rand(6,6)+rand(6,6)*1i;

%Constraints
Fc = ( A'*A >= gam*eye(6));

%Objective function
obj=-gam;

%options
opt = sdpsettings('solver','sedumi');

%Optimization
optimize(Fc,obj,opt)

%Displays output
fprintf('\nValue of Min singular value: ')
disp(value(sqrt(gam)))

fprintf('\nMATLAB verified output: ')
disp(1/norm(norm(A^(-1))))