lqr设计控制器实例matlab
时间: 2023-09-07 18:14:28 浏览: 41
LQR(线性二次调节器)是一种广泛应用于控制系统中的优化控制方法,用于设计状态反馈控制器。下面是一个简单的LQR控制器设计的Matlab示例:
假设有一个具有以下状态空间表示的系统:
$$
\begin{aligned}
\dot{x} &= Ax + Bu \\
y &= Cx
\end{aligned}
$$
其中,$x$ 是系统状态,$u$ 是控制输入,$y$ 是系统输出,$A$,$B$,$C$ 是系统矩阵。
首先,需要定义系统矩阵:
```matlab
A = [0 1 0; 0 0 1; -10 -11 -6];
B = [0; 0; 1];
C = [1 0 0];
```
然后,可以使用 `lqr` 函数计算 LQR 控制器的增益矩阵 $K$。
```matlab
Q = eye(3); % 权重矩阵 Q
R = 1; % 权重矩阵 R
K = lqr(A, B, Q, R);
```
这里,`Q` 和 `R` 是权重矩阵,用于控制状态和控制输入的相对重要性。在这个例子中,我们选择了单位矩阵作为 `Q`,并将 `R` 设置为标量 1。
最后,可以使用增益矩阵 $K$ 来构建 LQR 控制器:
```matlab
sys = ss(A - B*K, B, C, 0);
```
现在,`sys` 就是一个带有 LQR 控制器的状态空间模型。可以使用 `step` 函数来模拟系统的响应:
```matlab
t = 0:0.01:5;
u = zeros(size(t));
x0 = [1; 1; 1];
[y, t, x] = lsim(sys, u, t, x0);
plot(t, y);
```
这里,我们使用 `lsim` 函数来模拟系统的响应,并绘制输出 $y$ 随时间的变化。