h_inf — H-infinity (central) controller
[Sk,ro]=h_inf(P,r,romin,romax,nmax) [Sk,rk,ro]=h_inf(P,r,romin,romax,nmax)
syslin
list : continuous-time linear system (``augmented'' plant given in state-space form or in transfer form)
size of the P22
plant i.e. 2-vector [#outputs,#inputs]
a priori bounds on ro
with ro=1/gama^2
; (romin=0
usually)
integer, maximum number of iterations in the gama-iteration.
h_inf
computes H-infinity optimal controller for the
continuous-time plant P
.
The partition of P
into four sub-plants is given through
the 2-vector r
which is the size of the 22
part of P
.
P
is given in state-space
e.g. P=syslin('c',A,B,C,D)
with A,B,C,D
= constant matrices
or P=syslin('c',H)
with H
a transfer matrix.
[Sk,ro]=H_inf(P,r,romin,romax,nmax)
returns
ro
in [romin,romax]
and the central
controller Sk
in the same representation as
P
.
(All calculations are made in state-space, i.e conversion to state-space is done by the function, if necessary).
Invoked with three LHS parameters,
[Sk,rk,ro]=H_inf(P,r,romin,romax,nmax)
returns
ro
and the Parameterization of all stabilizing
controllers:
a stabilizing controller K
is obtained by
K=lft(Sk,r,PHI)
where PHI
is a linear
system with dimensions r'
and satisfy:
H_norm(PHI) < gamma
. rk (=r)
is the
size of the Sk22
block and ro = 1/gama^2
after nmax
iterations.
Algorithm is adapted from Safonov-Limebeer. Note that P
is assumed to be
a continuous-time plant.