# Routine convert_data

Convert GSS/LFR/USS objects into standard variables.

### Description

This routine converts a GSS/LFR/USS object describing one of the interconnections below into a SS object representing the nominal LTI system $M(s)$ and a matrix defining the structure of the block-diagonal operator $\Delta(s)=diag\left(\Delta_1(s),\dots,\Delta_N(s)\right)$. The resulting interconnection is normalized in the sense that all possible values of the initial interconnection are described when $\Delta(s)$ takes all possible values in the unit ball $\mathcal{B}_{\bf\Delta}$.

### Syntax

[sys,blk]=convert_data(usys{,skew/perf}) [sys,blk]=convert_data(gsys{,skew/perf}) [sys,blk]=convert_data(lsys{,skew/perf}) [sys,blk]=convert_data(sys,blk{,skew/perf})

### Input arguments

The interconnection between $M(s)$ and $\Delta(s)$ can be described by:

• a USS object usys,
• a GSS object gsys,
• a LFR object lsys,
• a LTI object sys describing the LTI system $M(s)$ and a $N\times 2$ matrix blk defining the structure of the block-diagonal operator $\Delta(s)=diag\left(\Delta_1(s),\dots,\Delta_N(s)\right)$:
• blk(i,:)=[-ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ real,
• blk(i,:)=[ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ complex,
• blk(i,:)=[ni mi] $\Rightarrow$ $\Delta_i(s)$ is a $n_i\times m_i$ LTI system.

For a robust stability problem, an additional input argument skew can be defined, indicating whether the maximum admissible $\mathcal{H}_\infty$ norm of each $\Delta_i(s)$ is bounded (skew(i)=0) or not (skew(i)=1). If skew is undefined, skew(i) is set to 1 for all $i=1,\dots,N$, which means that a classical $\mu$ problem is considered.

For a worst-case $\mathcal{H}_\infty$ performance problem, an additional input argument perf can be defined to specify how the transfer between $e$ and $y$ is structured. Each line of perf corresponds to a performance channel. For example, if perf=[2 1;1 3], the transfer between inputs 1-2 and output 1 is considered independently of the one between input 3 and outputs 2-3-4. If perf is undefined, it is set to [ne ny], where ne and ny denote the size of the signals $e$ and $y$.

### Output arguments

 sys SS object describing the normalized LTI system $M(s)$. blk Matrix defining the structure of the normalized block-diagonal operator $\Delta(s)=diag\left(\Delta_1(s),...,\Delta_N(s)\right)$. Its first 2 columns are defined as follows for all $i=1,...,N$: blk(i,1:2)=[-ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ real, blk(i,1:2)=[ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ complex, blk(i,1:2)=[ni mi] $\Rightarrow$ $\Delta_i(s)$ is a $n_i\times m_i$ LTI system. A third column is used to specify skew uncertainties: blk(i,3)=0 $\Rightarrow$ $\overline{\sigma}(\Delta_i(j\omega))\le 1$ for all $\omega\in\Omega$, blk(i,3)=1 $\Rightarrow$ $\overline{\sigma}(\Delta_i(j\omega))$ is unconstrained for all $\omega\in\Omega$.

### Example

Creation of an uncertain system as a USS object:
a1=ureal('a',5,'Percentage',[-40 20]); b1=ucomplex('b',4+3i,'Percentage',40); c1=ultidyn('c',[2 2],'Bound',2,'Type','GainBounded'); A=[-a1*b1-2 1;a1 -b1^2-1]+c1; usys=lft(tf({1 0;0 1},[1 0]),A); usys
Conversion and normalization:
[sys1,blk1]=convert_data(usys,[1;0;1]);

Creation of the same system as a LFR object:
a2=lfr('a','ltisr',1,[3 6],'minmax'); a2.blk.desc(11,1)=5; b2=lfr('b','ltisc',1,[4+3i 2],'disc'); c2=lfr('c','ltifc',[2 2],ltisys([],[],[],2),'freq'); A=[-a2*b2-2 1;a2 -b2^2-1]+c2; lsys=abcd2lfr(A,2); size(lsys)
Conversion and normalization:
[sys2,blk2]=convert_data(lsys,[1;0;1]);

Creation of the same system as a GSS object:
a3=gss('a',5,[3 6]); b3=gss('b',4+3i,[4 3 2]); c3=gss('c','LTI',[2 2],0,2); A=[-a3*b3-2 1;a3 -b3^2-1]+c3; gsys=abcd2gss(A,2); size(gsys)
Conversion and normalization:
[sys3,blk3]=convert_data(gsys,[1;1;0]);

Note that the order of the uncertainties is different between USS/LFR objects (parametric uncertainties first) and GSS objects (LTI uncertainties first)!

Comparison of usys, lsys, gsys, sys1, sys2 and sys3 for given values of the uncertainties.
Selected values of variables a, b and c:
a0=3;b0=4+5*1i;c0=ss(-1,[1 0],[1;0],mdiag(1,2));
Corresponding normalized values:
an=-1;bn=1i;cn=ss(-1,[1 0]/sqrt(2),[1;0]/sqrt(2),mdiag(1,2)/2);
Evaluation of usys and sys1:
usys_eval=usubs(usys,'a',a0,'b',b0,'c',c0); damp(usys_eval) sys1_eval=lft(sys1,mdiag(an*eye(2),bn*eye(3),cn)); damp(sys1_eval)
Evaluation of lsys and sys2:
a=a0;b=b0;c=c0; lsys_eval=eval(lsys); damp(lsys_eval.a) sys2_eval=lft(sys2,mdiag(an*eye(2),bn*eye(3),cn)); damp(sys2_eval)
Evaluation of gsys and sys3:
gsys_eval=eval(gsys,{'a' 'b' 'c'},{a0 b0 c0}); damp(gsys_eval.a) sys3_eval=lft(sys3,mdiag(cn,an*eye(2),bn*eye(3))); damp(sys3_eval)
$\Rightarrow$ all models have the same eigenvalues.
blk1-blk2 blk2-blk3([2 3 1],:)
$\Rightarrow$ uncertainties have the same structure for all models.

muub
mulb
mubb
iomargins