lqg2stan LQG to standard problem

## Syntax

    [P_aug, r] = lqg2stan(P, Qxu, Qwv)

## Arguments

P

  State space representation of the nominal plant (`nu` inputs, `ny` outputs, `nx` states).

Qxu

  `[Q, S ; S', N]` symmetric `nx+nu` by `nx+nu` weighting matrix.

Qwv

  `[R,T;T',V]` symmetric `nx+ny` by `nx+ny` covariance matrix.

r

  Row vector `[ny nu]`.

P_aug

  Augmented plant state space representation (see: syslin)

## Description

`lqg2stan` returns the augmented plant for linear LQG (H2) controller design problem defined by:

- The nominal plant `P`: described by

  \left\{\begin{array}{l}\dot{x}=A x+B u +w \\y=C x+D u +v\end{array}\right. \text{ for continuous time or } \left\{\begin{array}{l}x^+=A x+B u+w\\y=C x+D u +v\end{array}\right. \text{ for discrete time.}

- The (instantaneous) cost function \left[\begin{array}{ll} x'& u'\end{array}\right] Q_{xu}\left[\begin{array}{l} x\\ u\end{array}\right].

- The noises covariance matrix \mathbb{E}(\left[\begin{array}{l}w\\v\end{array}\right] \left[\begin{array}{ll}w'&v'\end{array}\right])=Q_{wv}

\text{P_aug }=\left\{\begin{array}{l}\dot{x}=A x+B_1 W+B u \\y_1=C_1 x+D_{12}W\\y_2=-C x+D_{21} W+D u \end{array}\right. \text{ for continuous time or } \left\{\begin{array}{l}x^+=A x+B_1 W+B u \\y_1=C_1 x+D_{12} W \\y_2=-C x+D_{21} W+D u \end{array}\right. \text{ for discrete time.}

## Algorithm

If `[B1; D21]` is a factor of `Qxu`, `[C1, D12]` is a factor of `Qwv` (see: fullrf) then

`P_aug = syslin(P.dt, P.A, [B1,P.B], [C1;-P.C], [0,D12;D21,P.D])`

## Examples

    ny = 2;
    nu = 3;
    nx = 4;
    P = ssrand(ny,nu,nx);
    Qxu = rand(nx+nu,nx+nu);
    Qxu = Qxu * Qxu';
    Qwv = rand(nx+ny,nx+ny);
    Qwv = Qwv * Qwv';
    [P_aug, r] = lqg2stan(P, Qxu, Qwv);
    K = lqg(P_aug,r);          // K=LQG-controller
    spec(h_cl(P_aug, r, K))    // Closed loop should be stable
    //Same as Cl = P/.K; spec(Cl('A'))

    lqg2stan(1/(%s+2), eye(2,2), eye(2,2))

## See also

- lqg
- lqr
- lqe
- obscont
- h_inf
- augment
- fstabst
- feedback

## History

6.0 It is no longer necessary to enter `-P` to get `P_aug` instead of `-P_aug` (bug 13751 fixed).