Categories &

Functions List

Function Reference: mixsyn

Function File: [K, N, gamma, info] = mixsyn (G, W1, W2, W3, …)

Solve stacked S/KS/T H-infinity problem. Mixed-sensitivity is the name given to transfer function shaping problems in which the sensitivity function $$ S = (I + G K)^{-1} $$ is shaped along with one or more other closed-loop transfer functions such as K S or the complementary sensitivity function $$ T = I - S = (I + G K)^{-1} G K $$ in a typical one degree-of-freedom configuration, where G denotes the plant and K the (sub-)optimal controller to be found. The shaping of multivariable transfer functions is based on the idea that a satisfactory definition of gain (range of gain) for a matrix transfer function is given by the singular values \(\sigma\) of the transfer function. Hence the classical loop-shaping ideas of feedback design can be generalized to multivariable systems. In addition to the requirement that K stabilizes G, the closed-loop objectives are as follows [1]:

  1. For disturbance rejection make \(\overline{\sigma}(S)\) small.
  2. For noise attenuation make \(\overline{\sigma}(T)\) small.
  3. For reference tracking make \(\overline{\sigma}(T) \approx \underline{\sigma}(T) \approx 1\)
  4. For input usage (control energy) reduction make \(\overline{\sigma}(K S)\) small.
  5. For robust stability in the presence of an additive perturbation \(G_p = G + \Delta\) make \(\overline{\sigma}(K S)\) small.
  6. For robust stability in the presence of a multiplicative output perturbation \(G_p = (I + \Delta) G\) make \(\overline{\sigma}(T)\) small.

In order to find a robust controller for the so-called stacked \(S/KS/T\, H_{\infty}\) problem, the user function mixsyn minimizes the following criterion $$ \underset{K}{\min} || N(K) ||_{\infty}, \quad N = | W_1 S; \,W_2 K S; \, W_3 T |$$ [K, N] = mixsyn (G, W1, W2, W3). The user-defined weighting functions W1, W2 and W3 bound the largest singular values of the closed-loop transfer functions S (for performance), K S (to penalize large inputs) and T (for robustness and to avoid sensitivity to noise), respectively [1]. A few points are to be considered when choosing the weights. The weigths Wi must all be proper and stable. Therefore if one wishes, for example, to minimize S at low frequencies by a weighting W1 including integral action, \(\frac{1}{s}\) needs to be approximated by \(\frac{1}{s + \epsilon}, \mbox{ where } \epsilon \ll 1\) Similarly one might be interested in weighting K S with a non-proper weight W2 to ensure that K is small outside the system bandwidth. The trick here is to replace a non-proper term such as $$ 1 + \tau_1 s \mbox{ by } \frac{1 + \tau_1 s}{1 + \tau_2 s}, \,\, \tau_2 \ll \tau_1$$ For more details, see [1], [2].



LTI model of plant.


LTI model of performance weight. Bounds the largest singular values of sensitivity S. Model must be empty [], SISO or of appropriate size.


LTI model to penalize large control inputs. Bounds the largest singular values of KS. Model must be empty [], SISO or of appropriate size.


LTI model of robustness and noise sensitivity weight. Bounds the largest singular values of complementary sensitivity T. Model must be empty [], SISO or of appropriate size.

Optional arguments of hinfsyn. Type help hinfsyn for more information.

All inputs must be proper/realizable. Scalars, vectors and matrices are possible instead of LTI models.



State-space model of the H-infinity (sub-)optimal controller.


State-space model of the lower LFT of P and K.


Structure containing additional information.


L-infinity norm of N.


Vector rcond contains estimates of the reciprocal condition numbers of the matrices which are to be inverted and estimates of the reciprocal condition numbers of the Riccati equations which have to be solved during the computation of the controller K. For details, see the description of the corresponding SLICOT routine.

Block Diagram

                                     | W1 S   |
 gamma = min||N(K)||             N = | W2 K S | = lft (P, K)
          K         inf              | W3 T   |

                                               +------+ z1
            +--------------------------------->|  W1  |---->
            |                                  +------+
            |                                  +------+ z2
            |               +----------------->|  W2  |---->
            |               |                  +------+
  r  +    e |  +--------+ u |  +--------+ y    +------+ z3
  --->(+)---+->|  K(s)  |---+->|  G(s)  |---+->|  W3  |---->
       ^ -     +--------+      +--------+   |  +------+
       |                                    |
                |        |-----> z1 (p1x1)          z1 = W1 e
  r (px1) ----->|  P(s)  |-----> z2 (p2x1)          z2 = W2 u
                |        |-----> z3 (p3x1)          z3 = W3 y
  u (mx1) ----->|        |-----> e (px1)            e = r - y

        r ----->|        |-----> z
                |  P(s)  |
        u +---->|        |-----+ e
          |     +--------+     |
          |                    |
          |     +--------+     |
          +-----|  K(s)  |<----+

        r ----->|  N(s)  |-----> z

 Extended Plant:  P = augw (G, W1, W2, W3)
 Controller:      K = mixsyn (G, W1, W2, W3)
 Entire System:   N = lft (P, K)
 Open Loop:       L = G * K
 Closed Loop:     T = feedback (L)

Relies on functions augw and hinfsyn, which use SB10DD and SB10AD, Copyright (c) 2020, SLICOT, available under the BSD 3-Clause (License and Disclaimer).

[1] Skogestad, S. and Postlethwaite I. (2005) Multivariable Feedback Control: Analysis and Design: Second Edition. Wiley, Chichester, England.
[2] Meinsma, G. (1995) Unstable and nonproper weights in H-infinity control Automatica, Vol. 31, No. 11, pp. 1655-1658

See also: hinfsyn, augw

Source Code: mixsyn