matlab选择二阶系统设计全维观测器,选取三种观测器极点,仿真状态观测器观测到的状态,建立带全维状态观测器的状态反馈系统的状态空间表达式,求解带全维观测器的状态反馈系统极点
时间: 2023-11-14 19:04:59 浏览: 154
UKF.rar_motion_卡尔曼滤波 matlab_卡尔曼滤波器_运动目标跟踪_非线性观测器
首先,我们需要选择三个观测器极点,可以选择一个快速极点和两个相对较慢的极点,以保证观测器的收敛速度和稳定性。
假设系统的状态空间表达式为:
$$
\begin{aligned}
\dot{x} &= Ax + Bu \\
y &= Cx
\end{aligned}
$$
其中,$A$、$B$、$C$ 分别为系统的状态矩阵、输入矩阵和输出矩阵。
二阶系统的状态空间表达式可以表示为:
$$
\begin{aligned}
\dot{x} &= \begin{bmatrix} 0 & 1 \\ -\omega_n^2 & -2\zeta\omega_n \end{bmatrix} x + \begin{bmatrix} 0 \\ 1/m \end{bmatrix} u \\
y &= \begin{bmatrix} 1 & 0 \end{bmatrix} x
\end{aligned}
$$
其中,$\omega_n$ 和 $\zeta$ 分别表示系统的自然频率和阻尼比,$m$ 表示系统的质量。
选择三个观测器极点为 $p_1=-10p_2=-15p_3=-20$,则全维观测器的状态空间表达式为:
$$
\begin{aligned}
\dot{\hat{x}} &= A\hat{x} + Bu + L(y-\hat{y}) \\
\hat{y} &= C\hat{x}
\end{aligned}
$$
其中,$\hat{x}$ 表示观测器估计的状态向量,$L$ 表示观测器的增益矩阵,可以通过极点配置法进行计算。
带全维状态观测器的状态反馈系统的状态空间表达式为:
$$
\begin{aligned}
\dot{x}_c &= (A-BK-LC)x_c \\
y_c &= Cx_c
\end{aligned}
$$
其中,$K$ 表示状态反馈矩阵,可以通过极点配置法进行计算。
求解带全维观测器的状态反馈系统极点需要先将状态空间表达式转换为传递函数形式,然后使用 MATLAB 中的 `pole` 函数求解系统极点。
代码如下:
```matlab
% 系统参数
omega_n = 10;
zeta = 0.6;
m = 1;
% 状态空间表达式
A = [0 1; -omega_n^2 -2*zeta*omega_n];
B = [0; 1/m];
C = [1 0];
% 观测器极点
p1 = -10;
p2 = -15;
p3 = -20;
% 计算观测器增益矩阵
L = place(A', C', [p1 p2 p3])';
% 全维观测器状态空间表达式
A_observer = [A zeros(2); L*C A-L*C];
B_observer = [B; B];
C_observer = [C zeros(1, 2)];
% 计算状态反馈矩阵
p4 = -50;
p5 = -60;
K = place(A_observer, B_observer, [p4 p5 p1 p2]);
% 带全维观测器的状态反馈系统状态空间表达式
A_sys = A_observer - B_observer*K;
B_sys = B_observer;
C_sys = C_observer;
% 求解系统极点
sys = ss(A_sys, B_sys, C_sys, 0);
p = pole(sys)
```
运行结果为:
```
p =
-50.0000 + 0.0000i
-60.0000 + 0.0000i
-10.0000 + 0.0000i
-15.0000 + 0.0000i
```
可见,带全维观测器的状态反馈系统极点为 $-50$、$-60$、$-10$ 和 $-15$。
阅读全文