本文需要对LMI理论和H无穷控制理论具有一定的了解。
建立一个二阶系统
A = [ 1 2 − 2 3 ] A = \left[ \begin{matrix} 1 & 2 \\ -2 & 3 \end{matrix} \right] A=[1−223] B 1 = [ 1 0 ] , B 2 = [ 0 1 ] B_1 = \left[ \begin{matrix} 1 \\ 0 \end{matrix} \right], B_2 = \left[ \begin{matrix} 0 \\ 1 \end{matrix} \right] B1=[10],B2=[01] C 1 = [ 1 0 ] , C 2 = [ 1 1 ] , C_1 = \left[ \begin{matrix} 1 & 0 \end{matrix} \right], C_2 = \left[ \begin{matrix} 1 & 1 \end{matrix} \right], C1=[10],C2=[11], D 11 = 1 , D 12 = D 21 = D 22 = 0 D_{11} = 1,D_{12} = D_{21} = D_{22} = 0 D11=1,D12=D21=D22=0其方程表示为
x ˙ = A x + B 1 w + B 2 u z = C 1 x + D 11 w + D 12 u y = C 2 x + D 21 w + D 22 u \begin{aligned} \dot{x} &= Ax + B_1 w +B_2 u \\ z &= C_1 x + D_{11} w + D_{12} u \\ y &= C_2 x + D_{21} w + D_{22} u \end{aligned} x˙zy=Ax+B1w+B2u=C1x+D11w+D12u=C2x+D21w+D22u
利用代码
P = ltisys(A, [B1 B2], [C1; C2], [D11 D12; D21 D22]);
把ABCD以系统矩阵的形式系统存储下来。
随后使用hinflmi
代码得到系统的最优H无穷表现gopt
和最优H无穷控制器K
:
[gopt, K] = hinflmi(P, [1 1]);
值得注意的是,若不设计最优H无穷控制器,而设计 γ \gamma γ-次优H无穷控制器,则需要在hinflmi
中加入参数 γ \gamma γ:
[gopt, K] = hinflmi(P, [1 1], gamma);
在H无穷控制器作用下,系统的EE增益不会超过gopt
。
下一步,利用slft
函数将P和K建立为闭环系统:
close = slft(P, K);
而splot
函数则可以绘制闭环系统的阶跃或脉冲响应。这里以阶跃相应为例:
splot(close, 'st');
其中'st'
表示阶跃响应。
得到的H无穷控制下的阶跃响应如下图所示:
查看系统的EE增益:
norminf(close)
得到
ans = 1.1695
MATLAB代码附下:
A = [1 2;
-2 3];
B1 = [1; 0];
B2 = [0; 1];
C1 = [1 0];
C2 = [1 1];
D11 = 1;
D12 = 0;
D21 = 0;
D22 = 0;
P = ltisys(A, [B1 B2], [C1; C2], [D11 D12; D21 D22]);
[gopt, K] = hinflmi(P, [1 1]);
close = slft(P, K); % 组成闭环系统
norminf(close) % 返回闭环系统的EE增益
splot(close, 'st'); % 绘制闭环系统的阶跃响应
grid on;
grid minor;