信号实验报告--离散系统的冲激响应.卷积和
实 验 报 告
一、实验室名称:信号与系统实验室
二、实验项目名称:离散系统的冲激响应、卷积和
三、实验原理:
在离散时间情况下,最重要的是线性时不变(LTI )系统。线性时不变系统的输入输出关系可通过冲激响应h [n ]表示
y [n ]=x [n ]*h [n ]=
k =-∞∑x [k ]h [n -k ] ∞
其中*表示卷积运算,MATLAB 提供了求卷积函数conv ,即
y =conv(x,h)
这里假设x [n ]和h [n ]都是有限长序列。如果x [n ]仅在n x ≤n ≤n x +N x -1区间内为非零,而h [n ]仅在n h ≤n ≤n h +N h -1上为非零,那么y [n ]就仅在
(n x +n h ) ≤n ≤(n x +n h ) +N x +N h -2
内为非零值。同时也表明conv 只需要在上述区间内计算y [n ]的N x +N h -1个样本值。需要注意的是,conv 并不产生存储在y 中的y [n ]样本的序号,而这个序号是有意义的,因为x 和h 的区间都不是conv 的输入区间,这样就应负责保持这些序号之间的联系。
filter 命令计算线性常系数差分方程表征的因果LTI 系统在某一给定输入时的输出。具体地说,考虑一个满足下列差分方程的LTI 系统:
∑a
k =0N k y [n -k ]=∑b m x [n -m ] m =0M
式中x [n ]是系统输入,y [n ]是系统输出。若x 是包含在区间n x ≤n ≤n x +N x -1内x [n ]的一个MATLAB 向量,而向量a 和b 包含系数a k 和b k ,那么
y=filter(b,a,x)
就会得出满足下面差分方程的因果LTI 系统的输出:
∑a (k +1) y [n -k ]=∑b (m +1) x [n -m ]
k =0m =0N M
注意,a (k +1) =a k 和b (m +1) =b m ,因为MATLAB 要求所有的向量序号都从1开始。例如,为了表示差分方程y [n ]+2y [n -1]=x [n ]-3x [n -1]表征的系统,就应该定义a=[1 2] 和 b =[1 -3]。 由filter 产生的输出向量y 包含了y [n ]在与向量x 中所在样本同一区间上的样本,即n x ≤n ≤n x +N x -1,以使得两个向量x 和y 中都包含了N x 个样本。
四、实验目的:加深对离散系统冲激响应、卷积和分析方法的理解。
五、实验内容:
实验内容(一)、使用实验仿真系统
实验内容(二)、MATLAB 仿真
六、实验器材(设备、元器件):计算机、MATLAB 软件。
七、实验步骤:
1、考虑有限长信号
⎧1,0≤n ≤5 x [n ]=⎨0, 其余n ⎩⎧n ,0≤n ≤5h [n ]=⎨ 0, 其余n ⎩
(a) 首先用解析方法计算y [n ]=x [n ]*h [n ]。
(b) 接下来利用conv 计算y [n ]=x [n ]*h [n ]的非零样本值,并将这些样本存 入向量y 中。构造一个标号向量ny ,对应向量y 样本的序号。
用stem(ny , y ) 画出这一结果。验证其结果与(a )是否一致。
2、对以下差分方程描述的系统
y [n ]=0. 5x [n ]+x [n -1]+2x [n -2]
y [n ]=0. 8y [n -1]+2x [n ]
y [n ]-0. 8y [n -1]=2x [n -1]
分别利用filter 计算出输入信号x [n ]=nu [n ]在1≤n ≤4区间内的响应y [n ]。
八、实验数据及结果分析:
实验(一)
1、计算y [n ]=x [n ]*h [n ],结果如下图
2、对以下差分方程描述的系统y [n ]=0. 5x [n ]+x [n -1]+2x [n -2],输入信号x [n ]=nu [n ]在1≤n ≤4区间内的响应y [n ]
结果见上图
3、对以下差分方程描述的系统y [n ]=0. 8y [n -1]+2x [n ]输入信号x [n ]=nu [n ]在1≤n ≤4区间内的响应y [n ]
2、对以下差分方程描述的系统y [n ]-0. 8y [n -1]=2x [n -1],输入信号x [n ]=nu [n ]在1≤n ≤4区间内的响应y [n
]
实验(二)
1、利用conv 计算y [n ]=x [n ]*h [n ]的非零样本值
Matlab 程序源代码:
a=[ones(1,6)];
h=[0,1,2,3,4,5];
y=conv(a,h);
m=length(y)-1;
ny=0:1:m;
stem(ny,y,'fill' );grid on ;
xlabel('Time index n');ylabel('Conversation y')
输出图像:
2、利用filter 计算出输入信号x [n ]=nu [n ]在1≤n ≤4区间内的响应y [n ]
Matlab 程序源代码:
y [n ]=0. 5x [n ]+x [n -1]+2x [n -2]如下:
a1=[0.5,1,2];
b1=[1];
n=1:4;
x1=[1 zeros(1,3)];
y1=filter(a1,b1,x1);
stem(n,y1,'fill' );
title('y[n]=0.5x[0]+x[n-1]+2x[n-2]');
xlabel('x' );ylabel('y' );
输出图像
:
y [n ]=0. 8y [n -1]+2x [n ]如下:
a2=[2];
b2=[1,-0.8];
n=1:4;
x2=[1 zeros(1,3)];
y2=filter(a2,b2,x2);
stem(n,y2,'fill' );
title('y[n]=0.8y[n-1]+2x[n]');
xlabel('x' );
ylabel('y' );
输出图像:
y [n ]-0. 8y [n -1]=2x [n -1]如下:
a3=[0,2];
b3=[1,-0.8];
n=1:4;
x3=[1 zeros(1,3)];
y3=filter(a3,b3,x3);
stem(n,y3,'fill' );
title('y[n]-0.8y[n-1]=2x[n-1]');
xlabel('x' );ylabel('y' );
输出图像:
九、思考题
考虑函数conv 和filter 之间的关系,试利用filter 函数来实现离散时间信号的卷积。
实验程序:a1=1;a2=2;a3=3;a4=4;
x=[zeros(1,3),ones(1,16),zeros(1,3)];
h=[a1,a2,a3,a4];
y1=conv(x,h);
m=length(y1)-1;
n1=0:m;
n2=0:m-3;
y2=filter(h,1,x);
subplot(2,1,1);
stem(n1,y1,'fill' );grid on ;
subplot(2,1,2);
stem(n2,y2,'fill' );grid on ;
图形如下
十、实验结论:
利用filter 求卷积:根据离散型卷积公式可知,x[n]相当于filter 中的b,y[n]相当于filter 中的a 。由以上程序及图形可见,结果与解析方式得到的结论相符。
十一、总结及心得体会:
离散时间序列h[n]和x[n]的卷积在数学上可以表示为 ,这个表达式形象化地可以看作是:将序列h[m]的时间轴反转并将它移位n 个样本,然后将移位后的h[n-m]乘以x[n]并在m 上将所得到的乘积序列相加。这种说法直接来自离散时间系统的线性和时不变性质。信号x[n]可以看成是由延时和加权脉冲的线性叠加所构成,因为一个LTI 系统能够用它对单个脉冲的响应来表示,那么一个LTI 系统的输出就应该相应于系统对构成x[n]的每一个延时和加权脉冲的响应的叠加。数学上,这个结果就是卷积和。
十一、对本实验过程及方法、手段的改进建议:
在上仿真之前,首先应熟练掌握MA TLAB 软件的应用。
报告评分:
指导教师签字: