Convert GSS/LFR/USS objects into standard variables.
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}$.
[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})
The interconnection between $M(s)$ and $\Delta(s)$ can be described by:
usys
,
gsys
,
lsys
,
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$.
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$:
A third column is used to specify skew uncertainties:
|
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.