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]:
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
$$ \min_K || 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}\)\(\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\)\(\frac{1 + \tau_1 s}{1 + \tau_2 s}, \,\, \tau_2 \ll \tau_1\)
For more details, see [1], [2].
Inputs
[], SISO or of appropriate size.[], SISO or of appropriate size.[], SISO or of appropriate size.hinfsyn. Type help hinfsyn for more information.All inputs must be proper/realizable. Scalars, vectors and matrices are possible instead of LTI models.
Outputs
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)
|
Algorithm
Relies on functions augw and hinfsyn,
which use SLICOT SB10FD SB10DD and SB10AD,
Copyright (c) 1996-2025, SLICOT, available under the BSD 3-Clause
(License and Disclaimer).
References
Source Code: mixsyn