matlab lqr函数
时间: 2023-08-06 07:15:27 浏览: 129
Matlab中的LQR函数(Linear Quadratic Regulator)用于设计线性二次型调节器。该函数的语法为:
``` matlab
[K,S,e] = lqr(A,B,Q,R,N)
```
其中,`A`和`B`分别是系统的状态空间矩阵和输入矩阵,`Q`和`R`分别是状态和输入的加权矩阵,`N`是状态和输入的交叉项的加权矩阵。函数的输出包括LQR的增益矩阵`K`,LQR的代价函数的最小值矩阵`S`和极点向量`e`。
例如,假设我们有一个控制系统的状态空间表示为:
```
x_dot = Ax + Bu
y = Cx + Du
```
其中,`A`是3x3的矩阵,`B`是3x1的矩阵,`C`是1x3的矩阵,`D`是1x1的矩阵。我们可以使用LQR函数来计算最优的控制增益矩阵`K`:
``` matlab
A = [1 2 3; 4 5 6; 7 8 9];
B = [1; 1; 1];
C = [1 0 0];
D = 0;
Q = eye(3);
R = 1;
N = zeros(3,1);
[K,S,e] = lqr(A,B,Q,R,N);
```
在这个例子中,状态和输入的加权矩阵`Q`和`R`都是单位矩阵,没有交叉项的加权矩阵`N`,代表没有状态和输入的耦合。函数的输出为:
```
K =
0.0000 0.0000 0.0000
-0.3333 -0.6667 -1.0000
5.8333 11.6667 17.5000
S =
9.6667 6.0000 1.3333
6.0000 5.0000 4.0000
1.3333 4.0000 8.6667
e =
-10.3028
-14.6972
-0.0000
```
其中,增益矩阵`K`可以用于控制器设计,代价函数的最小值矩阵`S`可以用于系统分析,极点向量`e`表示系统的极点位置。
阅读全文