一个稳定的连续时间 LTI系统,其输入信号为x(t)= cos(10t)+cos(20t)+cos(30t) 这个系统的微分方程如下 y(4)(t)+26.1y(3)(t) +341.4y"(t) +2 613.1y'(t)+10000y(t)= 10000x(t) ; 编写MATLAB程序,画出上述系统的幅度响应和在输入信号为x(t)情况下的零状态响应;
时间: 2023-07-31 07:11:29 浏览: 168
首先,我们可以将微分方程转换为状态空间模型:
$$
\begin{cases}
\dot{x}(t) = Ax(t) + Bu(t) \\
y(t) = Cx(t) + Du(t)
\end{cases}
$$
其中,$x(t)$是状态向量,$u(t)$是输入向量,$y(t)$是输出向量,$A,B,C,D$是系统矩阵。
对于本题中的系统,可以得到:
$$
\begin{cases}
\dot{x}(t) = \begin{bmatrix}
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
-10000 & -2613.1 & -341.4 & -26.1
\end{bmatrix} x(t) + \begin{bmatrix}
0 \\
0 \\
0 \\
10000
\end{bmatrix} x(t) \\
y(t) = \begin{bmatrix}
1 & 0 & 0 & 0
\end{bmatrix} x(t)
\end{cases}
$$
接下来,我们可以使用MATLAB进行计算和绘图。代码如下:
```matlab
% 定义系统矩阵
A = [0 1 0 0; 0 0 1 0; 0 0 0 1; -10000 -2613.1 -341.4 -26.1];
B = [0; 0; 0; 10000];
C = [1 0 0 0];
D = 0;
% 定义输入信号
t = 0:0.01:10;
x = cos(10*t) + cos(20*t) + cos(30*t);
% 计算幅度响应
sys = ss(A, B, C, D);
freqs = logspace(0, 3, 100);
[mag, ~] = bode(sys, freqs);
figure;
semilogx(freqs, 20*log10(mag));
grid on;
xlabel('Frequency (rad/s)');
ylabel('Magnitude (dB)');
title('Bode Plot of the System');
% 计算零状态响应
initial = [0; 0; 0; 0];
[y, ~, ~] = lsim(sys, x, t, initial);
figure;
plot(t, y);
grid on;
xlabel('Time (s)');
ylabel('Output');
title('Zero-State Response of the System');
```
运行以上代码,可以得到幅度响应和零状态响应的图像:
注:由于该系统是一个高阶系统,因此需要使用logspace函数生成频率向量。在绘制幅度响应图像时,使用semilogx函数将横坐标设置为对数坐标轴。在绘制零状态响应图像时,使用lsim函数计算系统的响应。
阅读全文