matlab使用LMI对二阶系统进行H无穷控制

发布时间:2025-12-09 17:37:01 浏览次数:6

MATLAB使用LMI对二阶系统进行H无穷控制

  • 1. 二阶系统建立
  • 2. 二阶系统实现
  • 3. MATLAB代码

本文需要对LMI理论和H无穷控制理论具有一定的了解。

1. 二阶系统建立

建立一个二阶系统
A = [ 1 2 − 2 3 ] A = \left[ \begin{matrix} 1 & 2 \\ -2 & 3 \end{matrix} \right] A=[1−2​23​] 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​=[1​0​],C2​=[1​1​], 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+B1​w+B2​u=C1​x+D11​w+D12​u=C2​x+D21​w+D22​u​

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;
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477