# augw

State-space or transfer function plant augmentation for use in weighted mixed-sensitivity H and H2 loopshaping design

## Syntax

```P = AUGW(G,W1,W2,W3)
```

## Description

`P = AUGW(G,W1,W2,W3)` computes a state-space model of an augmented LTI plant P(s) with weighting functions W1(s), W2(s), and W3(s) penalizing the error signal, control signal and output signal respectively (see block diagram) so that the closed-loop transfer function matrix is the weighted mixed sensitivity

`$T{y}_{1}{u}_{1}\triangleq \left[\begin{array}{c}{W}_{1}S\\ {W}_{2}R\\ {W}_{3}T\end{array}\right]$`

where S, R and T are given by

`$\begin{array}{c}S={\left(}^{I}\\ R=K{\left(}^{I}\\ T=GK{\left(}^{I}\end{array}$`

The LTI systems S and T are called the sensitivity and complementary sensitivity, respectively.

Plant Augmentation

For dimensional compatibility, each of the three weights W1, W2 and W3 must be either empty, a scalar (SISO) or have respective input dimensions Ny, Nu, and Ny where G is Ny-by-Nu. If one of the weights is not needed, you may simply assign an empty matrix [ ]; e.g., `P = AUGW(G,W1,[],W3)` is P(s) as in the Algorithms section below, but without the second row (without the row containing `W2`).

## Examples

collapse all

### Create Augmented Plant for H-Infinity Synthesis

```s = zpk('s'); G = (s-1)/(s+1); W1 = 0.1*(s+100)/(100*s+1); W2 = 0.1; W3 = []; P = augw(G,W1,W2,W3); [K,CL,GAM] = hinfsyn(P); [K2,CL2,GAM2] = h2syn(P); L = G*K; S = inv(1+L); T = 1-S; sigma(S,'k',GAM/W1,'k-.',T,'r',GAM*G/W2,'r-.') legend('S = 1/(1+L)','GAM/W1','T=L/(1+L)','GAM*G/W2','Location','Northwest') ```

## Limitations

The transfer functions G, W1, W2 and W3 must be proper, i.e., bounded as $s\to \infty$ or, in the discrete-time case, as $z\to \infty$. Additionally, W1, W2 and W3 should be stable. The plant G should be stabilizable and detectable; else, `P` will not be stabilizable by any `K`.

collapse all

### Algorithms

The augmented plant P(s) produced by is

`$P\left(s\right)=\left[\begin{array}{cc}{W}_{1}& -{W}_{1}G\\ 0& {W}_{2}\\ 0& {W}_{3}G\\ I& -G\end{array}\right]$`

Partitioning is embedded via `P=mktito(P,NY,NU)`, which sets the InputGroup and OutputGroup properties of P as follows

```[r,c]=size(P); P.InputGroup = struct('U1',1:c-NU,'U2',c-NU+1:c); P.OutputGroup = struct('Y1',1:r-NY,'Y2',r-NY+1:r); ```