MATLAB使用LMI对二阶系统进行H无穷控制
本文需要对LMI理论和H无穷控制理论具有一定的了解。
1. 二阶系统建立
建立一个二阶系统
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
2. 二阶系统实现
利用代码
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
3. MATLAB代码
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;