1、已知微分方程y’’(t)+2y’(t)+50y(t)=x(t),求该系统的冲激响应波形h(t),和单位阶跃响应波形h1(t).
这个微分方程可以写成标准的二阶线性微分方程形式:
对应的传递函数是:
在 MATLAB 中,可以使用 tf
函数来定义这个传递函数,然后使用 impulse
和 step
函数来分别计算冲激响应和单位阶跃响应。
运行代码:
% 定义传递函数
numerator = [1];
denominator = [1 2 50]; % s^2 + 2s + 50
sys = tf(numerator, denominator);
% 计算冲激响应
t = 0:0.01:5; % 时间向量
[h, t_impulse] = impulse(sys, t);
% 计算单位阶跃响应
[h1, t_step] = step(sys, t);
% 绘制图形
figure; % 创建一个新的图形窗口
plot(t_impulse, h, 'b', t_step, h1, 'r--'); % 冲激响应用蓝色实线,单位阶跃响应用红色虚线
title('System Responses');
xlabel('Time (s)');
ylabel('Amplitude');
legend('Impulse Response h(t)', 'Step Response h1(t)');
仿真结果:
2、求下列各信号从到的积分。
(1) (2)
matlab代码:
syms t;
% 第一个信号 x(t) = e^(-|t|)
x1 = exp(-abs(t));
integral_1 = int(x1, t, -inf, inf);
% 第二个信号 x(t) = 0.5[1 + cos(2*pi*t)] for |t| <= 0.5, and 0 for |t| > 0.5
x2 = 0.5 * (1 + cos(2 * pi * t));
integral_2 = int(x2, t, -0.5, 0.5);
% 显示结果
disp('积分结果 1: ');
disp(integral_1);
disp('积分结果 2: ');
disp(integral_2);
运行结果:
3、计算x(t)=e^{t}与h(t)=(3e^{-2t}-1)ε(t)的卷积(注:利用卷积的定义编程)。
matlab代码:
syms t tau;
% 定义函数 x(t) 和 h(t)
x_t = exp(t);
h_t = (3 * exp(-2 * tau) - 1) * heaviside(tau);
% 计算卷积
convolution = int(x_t * subs(h_t, tau, t - tau), tau, -5, t);
% 显示卷积结果
fplot(convolution, [-5 5]);
title('Convolution of x(t) and h(t)');
xlabel('t');
ylabel('(x * h)(t)');
grid on;
运行结果:
4、求的傅里叶变换,并绘制其频谱图。
matlab代码:
syms t w;
% 定义函数
f = -1 / (pi * t^2);
% 计算傅里叶变换
F_w = fourier(f, t, w);
% 绘制频谱图
fplot(abs(F_w), [-10 10]);
title('Fourier Transform of -1 / (\pi t^2)');
xlabel('\omega');
ylabel('|F(\omega)|');
grid on;
运行结果: