lmi状态反馈h∞控制器matlab
时间: 2023-07-19 13:35:48 浏览: 82
为了设计LMI状态反馈H∞控制器,需要先建立系统的状态空间模型,然后根据H∞性能指标,构建LMI约束条件。最后,通过求解LMI问题得到控制器增益矩阵。
以下是一个基于MATLAB的例子,展示如何用LMI工具箱设计LMI状态反馈H∞控制器。
假设我们有以下系统模型:
```
% 状态空间模型
A = [-1 1 0; 0 -2 0; 1 1 -1];
B = [1; 1; 0];
C = [1 0 0];
D = 0;
sys = ss(A, B, C, D);
```
接着,我们可以使用LMI工具箱中的`hinfstruct`函数来构建H∞性能指标和LMI约束条件:
```
% H∞性能指标
gamma = 1.5;
P = lyap(A, eye(size(A)));
% 构建LMI约束条件
F = [eye(size(A))*s - A' - P*C'*C*P, B*B';...
zeros(size(A)) , -s*eye(size(A))];
G = [zeros(size(B)); eye(size(A))];
H = [gamma^2*eye(size(C, 1)) zeros(size(C, 1), size(A, 1));...
zeros(size(A, 1), size(C, 1)), P];
LMI = [F <= 0, H <= 0];
```
最后,我们可以使用`lmi`函数来求解LMI问题并得到控制器增益矩阵:
```
% 求解LMI问题
setlmis([])
s = lmivar(1, [size(A, 1) 1]);
K = lmivar(1, [size(B, 2) size(A, 1)]);
lmiterm([1 1 1 K], 1, 1);
lmiterm([-2 1 1 s], 1, 1);
lmiterm([-1 1 1 0], F);
lmiterm([-1 2 1 K], B, C);
lmiterm([-1 2 2 0], eye(size(B, 2)));
lmiterm([-1 3 3 0], H);
LMISYS = getlmis;
[tmin, xfeas] = feasp(LMISYS);
K = dec2mat(LMISYS, xfeas, K);
```
最终,我们得到了H∞控制器的状态反馈增益矩阵K。