学号:12081311姓名:高超选课时间:周一3-5节数字信号处理实验报告第一次实验离散时间系统的时域特性分析一.实验目的线性时不变(LTI)离散时间系统在时域中可以通过常系数线性差分方程来描述,冲激响应列可以刻画时域特性。本次实验通过使用MATLAB函数研究离散时间系统的时域特性,以加深对离散时间系统的差分方程、冲激响应和系统的线性和时不变性的理解。二.基本原理一个离散时间系统是将输入序列变换成输出序列的一种运算。离散时间系统中最重要、最常用的是“线性时不变系统”。1.线性系统满足叠加原理的系统称为线性系统,即若某一输入是由N个信号的加权和组成的,则输出就是系统对这几个信号中每一个输入的响应的加权和。即𝑦1(𝑛)=𝑇[𝑥1(𝑛)],𝑦2(𝑛)=𝑇[𝑥2(𝑛)]那么当且仅当系统同时满足T[𝑥1(𝑛)+𝑥2(𝑛)]=𝑇[𝑥1(𝑛)]+𝑇[𝑥2(𝑛)]=𝑦1(𝑛)+𝑦2(𝑛)和T[a𝑥(𝑛)]=aT[𝑥(𝑛)]=a𝑦(𝑛)时,系统是线性的。在证明一个系统是线性系统时,必须证明此系统同时满足可加性和比例性,而且信号以及任何比例系数都可以是复数。2.时不变系统系统的运算关系T[·]在整个运算过程中不随时间(也即序列的先后)而变化,这种系统称为时不变系统(或称移不变系统)。若输入𝑥(𝑛)的输出为𝑦(𝑛),则将输入序列移动任意位后,其输出序列除了跟着位移外,数值应该保持不变,即T[𝑥(𝑛)]=𝑦(𝑛)则T[𝑥(𝑛−𝑚)]=𝑦(𝑛−𝑚)(𝑚为任意整数)满足以上关系的系统称为时不变系统。3.常系数线性差分方程线性时不变离散系统的输入、输出关系可用以下常系数线性差分方程描述:𝑦(𝑛)=−∑𝑎𝑘𝑦(𝑛−𝑘)𝑁𝑘=1+∑𝑏𝑟𝑥(𝑛−𝑟)𝑀𝑟=1当输入𝑥(𝑛)为单位冲激序列时,输出𝑦(𝑛)即为系统的单位冲激响应ℎ(𝑛)。当𝑎𝑘=0,𝑘=1,2,···,N时,ℎ(𝑛)是有限长度的,称系统为有限长单位冲激响应(FIR)系统;反之,则称系统为无限长单位冲激响应(IIR)系统。学号:12081311姓名:高超选课时间:周一3-5节三.实验内容及实验结果1.实验内容考虑如下差分方程描述的两个离散时间系统:系统1:系统2:输入:(1)编程求上述两个系统的输出,并画出系统的输入与输出波形。(2)编程求上述两个系统的冲激响应序列,并画出波形。(3)若系统的初始状态为零,判断系统2是否为时不变的?是否为线性的?2.实验结果(1)编程求上述两个系统的输出和冲激响应序列,并画出系统的输入、输出与冲激响应波形。源代码:%系统1clearallclcn=0:0.01:299;x=cos(20*pi*n/256)+cos(200*pi*n/256);x1=[x00];%x1[n]=x[n]x2=[0x0];%x2[n]=x[n-1]x3=[00x];%x3[n]=x[n-2]y=0.5*x1+0.27*x2+0.77*x3;figuresubplot(3,1,1);plot(n,x);xlabel('时间信号n');ylabel('信号幅度');title('输入信号');subplot(3,1,2);plot(y);%xlim([-1010]);xlabel('时间信号n');ylabel('信号幅度');title('输出信号');%输出波形a=[1];b=[0.5,0.27,0.77];N=40;z=impz(b,a,N);%求系统的冲激响应subplot(3,1,3);stem(z);xlabel('时间序号n');ylabel('信号幅度');title('冲激响应序列');%冲激响应序列grid;实验结果如图1-1所示,%系统2clearallclcn=0:0.01:299;x=cos(20*pi*n/256)+cos(200*pi*n/256);图1-1系统1的输入、输出与冲激响应学号:12081311姓名:高超选课时间:周一3-5节num=[0.450.50.45];%x[n]的系数den=[1-0.530.46];%y[n]的系数figuresubplot(3,1,1);plot(n,x);xlabel('时间信号n');ylabel('信号幅度');title('输入信号');%输入波形subplot(3,1,2);y=filter(num,den,x);plot(y);xlabel('时间信号n');ylabel('信号幅度');title('输出信号');%输出波形N=40;z=impz(num,den,N);%求系统的冲激响应subplot(3,1,3);stem(z);xlabel('时间序号n');ylabel('信号幅度');title('冲激响应序列');%冲激响应序列grid;实验结果如图1-2所示,(4)若系统的初始状态为零,判断系统2是否为时不变的?是否为线性的?1.应用叠加原理验证系统2是否为线性系统:源代码:%系统2是否为线性系统clearallclcn=0:1:299;x1=cos(20*pi*n/256);x2=cos(200*pi*n/256);x=x1+x2;num=[0.450.50.45];den=[1-0.530.46];y1=filter(num,den,x1);y2=filter(num,den,x2);y=filter(num,den,x);yt=y1+y2;figuresubplot(2,1,1);stem(n,y,'g');xlabel('时间信号n');ylabel('信号幅度');axis([0100-22]);grid;subplot(2,1,2);stem(n,yt,'r');xlabel('时间信号n');ylabel('信号幅度');axis([0100-22]);grid;实验结果如图1-3所示,从实验结果的2幅图“信号幅度”对比结果可以得出,系统2为线性系统。2.应用时延差值来判断系统2是否为时不变系统。源代码:%是否时不变clearallclcn=0:299;图1-2系统2的输入、输出与冲激响应图1-3判定系统2是否为线性系统学号:12081311姓名:高超选课时间:周一3-5节D=10;x=cos(20*pi*n/256)+cos(200*pi*n/256);xd=[zeros(1,D)x];%生成新序列xd=x(n-D),延时D个单位num=[0.450.50.45];den=[1-0.530.46];ic=[00];%初始化y=filter(num,den,x,ic);yd=filter(num,den,xd,ic);N=length(y);d=y-yd(1+D:N+D);figuresubplot(3,1,1);stem(n,y);ylabel('信号幅度');title('输出y[n]');grid;subplot(3,1,2);stem(n,yd(1:length(yd)-D));ylabel('信号幅度');title('由于输入延时而产生的输出yd[n]');grid;subplot(3,1,3);stem(n,d);xlabel('时间序号n');ylabel('信号幅度');title('差值信号');grid;实验结果如图1-4所示,从实验结果的第3幅图“差值信号”的幅度可以得出,系统2为时不变系统。四.程序调试及解决方案1.出现的问题在判断系统2是否为时不变系统,将系统2进行时延之后,无法输出时延波形,导致最后的波形差值也无法输出。2.解决办法在经过认真检查之后,发现在输出时延波形时,没有考虑到时延前后n和yd的长度匹配问题。在原输出波形语句“stem(n,yd(1:length(yd)))”中的yd表述变换为“stem(n,yd(1:length(yd)-D))”后,n和yd的长度得以匹配,最终输出结果波形。五.实验总结通过本次实验,我对于利用matlab来求解关于离散时间系统的方法有了初步的掌握。不仅如此,我清楚的认识到了线性时不变系统的性质:线性性和时不变性。在学会使用matlab展现系统的性质后,我对以后学习离散时间系统有了更多的信心。图1-4判定系统2是否为时不变系统