《信号、系统与信号处理实验I》
实验报告
实验名称:离散时间系统的时域分析
姓名:
学号:
专业:通信工程
实验时间
杭州电子科技大学
通信工程学院
一、实验目的
1.通过 matlab 仿真一些简单的离散时间系统,并研究它们的时域特性。
2.掌握利用 matlab 工具箱求解 LTI 系统的单位冲激响应。
二、实验内容
1、离散时间系统的时域分析
1.1 线性与非线性系统
假定系统为y[n]-0.4y[n-1]=2.24x[n]+2.49x[n-1] (2.9)
输入三个不同的输入序列x1[n]、x2[n]和,计算并求出相应的三个输出,并判断是否线性。x[n]=a x1[n]+b x2[n]
clear all;
n=0:40;
a=2;b=-3;
x1=cos(2*pi*0.1*n);
x2=sin(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.24 2.49];
den=[1 -0.4];
y1=filter(num.den,x1);
y2=filter(num.den,x2);
y=filter(num.den,x);
yt=a*y1+b*y2;
d=y-yt;%计算差值输出 d[n]
subplot(3,1,1) stem(n,y);
ylabel(‘振幅’); subplot(3,1,2)
stem(n,yt); ylabel(‘振幅’);
subplot(3,1,3) stem(n,d);
ylabel(‘振幅’); title(‘差信号’)
(1)假定另一个系统为y[n]=x[n]+3.2x[n-2],修改以上程序,通过绘出的图形判断该系统是否线性系统。
1.2 时变与时不变系统
根据(2.9)的系统,产生两个不同的输入序列 x[n]和 x[n-D],根据输出判断是否时不变系统。
clear all;
n=0:40;
a=2;b=-3;
D=10;
x=cos(2*pi*0.1*n);
xd=[zeros(1,D) x];
num=[2.24 2.49];
den=[1 -0.4];
y=filter(num.den,x);
yd=filter(num.den,xd);
d=y-yd(1+D:41+D);%计算差值输
d[n]
subplot(3,1,1) stem(n,y);
ylabel(‘振幅’); title(‘输出
y[n]’);grid; subplot(3,1,2)
stem(n,yd(1:41)); ylabel(‘振幅’);
title(‘由于延时输入 x[n’,num2str(D),’]的输出’);grid;
subplot(3,1,3) stem(n,d); ylabel(‘振幅’); title(‘差信
号’);grid;
(1)y[n]和 yd[n]有什么关系?延时是由哪个参数控制的?
(2)该系统是时不变系统吗?
2、线性时不变系统的单位冲激响应
根据(2.9)的系统,计算并绘出单位冲激响应。
clear all;
N=40;
num=[2.24 2.49];
den=[1 -0.4];
y=impz(num,den,N);
stem(y);
xlabel(‘时间序号’);
ylabel(‘振幅’);
title(‘冲激响应’);grid;
(1)修改以上程序,产生如下 LTI 系统的单位冲激响应前 45 个样本:
y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3=0.9x[n]-0.45x[n-1]+0.35x[n-2]+0.002x[n-3]
三、实验过程及实验结果
1.1
clear all;
n=0:40;
a=2;b=-3;
x1=cos(2*pi*0.1*n);
x2=sin(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.24 2.49];
den=[1 -0.4];
y1=filter(num,den,x1);
y2=filter(num,den,x2);
y=filter(num,den,x);
yt=a*y1+b*y2;
d=y-yt;
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
subplot(3,1,2)
stem(n,yt);
ylabel('振幅');
subplot(3,1,3);
stem(n,d);
ylabel('振幅')
title('差信号')
线性仅在极小的范围内有误差
clear all;
n=0:40;
a=2;b=-3;
x1=cos(2*pi*0.1*n);
x2=sin(2*pi*0.4*n);
x=a*x1+b*x2;
num=[1 0 3.2];
den=[1];
y1=filter(num,den,x1);
y2=filter(num,den,x2);
y=filter(num,den,x);
yt=a*y1+b*y2;
d=y-yt;
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
subplot(3,1,2)
stem(n,yt);
ylabel('振幅');
subplot(3,1,3);
stem(n,d);
ylabel('振幅')
title('差信号')
线性仅在极小的范围内有误差
1.2
clear all;
n=0:40;
a=2;b=-3;D=10;
x=cos(2*pi*0.1*n);
xd=[zeros(1,D) x];
num=[2.24 2.49];
den=[1 -0.4];
y=filter(num,den,x);
yd=filter(num,den,xd);
d=y-yd(1+D:41+D);
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
title('输出y[n]');grid;
subplot(3,1,2)
stem(n,yd(1:41));
ylabel('振幅');
title(['由于延时输入x[n-',num2str(D),']的输出');grid;
subplot(3,1,3)
stem(n,d);
ylabel('振幅');
title('差信号');grid;
(1)yd[n]由y[n]向右平移10个单位得到,延时由参数D控制。
(2)该系统是时不变系统。y[n]经过时移后得到yd[n],差信号为0,所以是时不变系统。
2
clear all;
N=45;
num=[0.9 -0.45 0.35 0.002]; den=[1 0.71 -0.46 -0.62];
y=impz(num,den,N);
stem(y);
xlabel('时间信号');
ylabel('振幅');
title('冲激响应');
grid;
N=40;
num=[0.9 -0.45 0.35 0.002]; den=[1 0.71 -0.46 -0.62];
y2=impz(num,den,N);
x1=[1,zeros(1,N-1)];
y1=filter(num,den,x1);
y3=y2';
m=y1-y3
stem(m);
xlabel('时间信号');
ylabel('振幅');
title('冲激响应');
grid;
四、实验小结
通过这次实验,理解了离散时间的一些时域问题,再次深刻了解了线性时不变系统的一些性质,并且可以通过差值输出的信号图形来验证系统是否为时不变系统。掌握了两个matlab新
函数filter和impz的用法。