【信号与系统】【北京航空航天大学】实验二、连续时间系统的时域分析【MATLAB】

发布时间:2024年01月14日

一、实验目的

1、掌握连续时间信号的卷积运算以及其对应的 MATLAB 实现方法;
2、掌握连续系统的冲激响应阶跃响应 以及其对应的 MATLAB 实现方法;
3、掌握利用 MATLAB 求 LTI (Linear Time-Invariant, 线性时不变)系统响应的方法;
4、掌握利用 MATLAB 求函数卷积解微分方程

二、实验内容

1、
在这里插入图片描述

MATLAB代码:

>> clear all;
>> t = -2 : 0.01 : 6;
>> x = exp(-t) .* (t >= 0 & t < 2);
>> h = t .* (t >= 0 & t < 3);
>> y = conv(x, h) * 0.01;
>> figure
>> plot(t, x);
>> hold on;
>> plot(t, h);
>> hold on;
>> plot(t, y(201: 1001));
>> xlabel('Time(sec)');
>> ylabel('Amplitude');
>> title('Ex.1');
>> legend('x(t)', 'h(t)', 'y(t)', 'Location', 'Best');
>> axis([-2 6 -0.5 3.5]);

生成的信号波形图

在这里插入图片描述

2、

在这里插入图片描述

MATLAB代码:

>> clear all;
>> n = -10 : 10;
>> figure
>> subplot(3, 1, 1);
>> x = (n >= 0 & n < 4);
>> stem(n, x);
>> grid on
>> title('x[n]', 'Fontsize', 14);
>> xlabel('n', 'FontSize', 11);
>> ylabel('x[n]', 'FontSize', 11);
>> subplot(3, 1, 2);
>> h = 2 .^ (-n) .* (n >= 0 & n < 6);
>> stem(n, h);
>> grid on
>> title('h[n]', 'Fontsize', 14);
>> xlabel('n', 'FontSize', 11);
>> ylabel('h[n]', 'FontSize', 11);
>> subplot(3, 1, 3);
>> y = conv(x, h);
>> n2 = -20 : 20;
>> stem(n2, y);
>> axis([-10 10 0 2]);
>> title('y[n]', 'Fontsize', 14);
>> xlabel('n', 'FontSize', 11);
>> ylabel('y[n]', 'FontSize', 11);
>> grid on;

生成的信号波形图

在这里插入图片描述

3、

在这里插入图片描述
MATLAB代码:

>> clear all;
>> t = 0 : 0.01 : 5;
>> figure;
>> a = [1 5 600];
>> b = [3 100];
>> sys = tf(b, a);
>> y = impulse(sys, t);
>> plot(t, y);
>> hold on;
>> z = step(sys, t);
>> plot(t, z);
>> grid on;
>> title('Ex.3', 'FontSize', 14);
>> xlabel('Time(sec)');
>> ylabel('Amplitude');
>> legend('冲激响应', '阶跃响应', 'Location', 'Best');

生成的信号波形图

在这里插入图片描述

4、
在这里插入图片描述MATLAB代码:

>> clear all;
>> figure;
>> subplot(2, 1, 1);
>> %卷积法求零状态响应
>> a = [1 1 2];
>> b = [0 1 2];
>> t = 0 : 0.01 : 15;
>> [r, p, k] = residue(b, a);
>> h = r(1) * exp(p(1) * t) + r(2) * exp(p(2) * t);
>> x = exp(-t) .* sin(t) .* (t >= 0);
>> dt = 0.01;
>> y = conv(x, h) * dt;
>> plot(t, y(1: length(t)));
>> grid on;
>> title('卷积法求零状态响应', 'FontSize', 14);
>> xlabel('Time(sec)');
>> ylabel('y(t)');
>> subplot(2, 1, 2);
>> %lsim法求零状态响应
>> sys = tf(b, a);
>> z = lsim(sys, x, t);
>> plot(t, z);
>> title('lsim法求零状态响应', 'FontSize', 14);
>> xlabel('Time(sec)');	
>> ylabel('y(t)');
>> grid on;

生成的信号波形图

在这里插入图片描述

思考题1: 写出连续、离散信号卷积的定义?卷积运算的作用是?

解答:

在这里插入图片描述

思考题2: conv函数输出的数组维度与输入维度有何关系?如何将输出结果与时间向量相对应?

解答:

在这里插入图片描述

>> clear all;
>> t1 = 0 : 0.01 : 3;
>> t2 = 0 : 0.01 : 5;
>> x = exp(- t);
>> x = exp(- t1);
>> y = sin(2 * t2);
>> z = conv(x, y);
>> figure;
>> plot(t1, y(1:length(t1)));

实验收获与感想:
1、 求解连续时间系统零状态响应时,需注意系数向量 a, b的写法,次数从高到低;
2、 注意调用卷积函数conv之后 结果向量的维数
3、 别误关当前图像;
4、 卷积法求零状态响应时,t 应设定为 tmin = 0,否则会报错;
5、 (重要)MATLAB中所有的计算都是针对离散数据点进行的,连续函数只能通过近似的方法得到;
6、 注意连续信号卷积的公式中的 ’dt’ 项。

文章来源:https://blog.csdn.net/weixin_43031313/article/details/135581818
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。