-1-实验2离散系统的差分方程、冲激响应和卷积分析一、实验目的加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。二、实验原理离散系统可表示为][nx][nyDiscrete-timesystme其输入、输出关系可用以下差分方程描述:MkmNkkmnxbknya00][][输入信号分解为冲激信号,mmnmxnx][][][。记系统单位冲激响应][][nhn,则系统响应为如下的卷积计算式:mmnhmxnhnxny][][][][][当Nkak,...2,1,0时,h[n]是有限长度的(n:[0,M]),称系统为FIR系统;反之,称系统为IIR系统。在MATLAB中,可以用函数y=filter(b,a,x)实现差分方程的仿真,也可以用函数y=conv(x,h)计算卷积,用y=impz(b,a,N)求系统的冲激响应。对于N阶差分方程MkmNkkmnxbknya00][][,1)当给定函数的系数和输入序列时,差分方程的递推过程在MATLAB中用函数y=filter(b,a,x)来实现,其中,b为右端x的系数,a为左端y的系数,a0=1。求得的输出序列y和输入序列x的长度相等。若x的长度太短,需要补零。用conv函数计算能在输入序列后自动补零,而filter函数不能。2)MATLAB中有一个求离散系统脉冲响应的专门函数y=impz(b,a,N),其中,b为右端x的系数,a为左端y的系数,a0=1。N为要求的点数。键入impz(b,a),程序将自动给出脉冲响应的曲线。3)当输入序列和脉冲响应序列都是以数值方式给出时,可以用MATLAB中的卷积函数y=conv(x,h)来计算。-2-三、实验内容和要求1、以下程序中分别使用conv和filter函数计算h和x的卷积y和y1,运行程序,并分析y和y1是否有差别,为什么要使用x[n]补零后的x1来产生y1;具体分析当h[n]有i个值,x[n]有j个值,使用filter完成卷积功能,需要如何补零?编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。要求分别用filter、conv、impz三种函数完成。]1[][]2[125.0]1[75.0][nxnxnynyny给出理论计算结果和程序计算结果并讨论。a.单位冲激响应:(1)用filter函数a1=[1,0.75,0.125];b1=[1,-1];n=0:20;x1=[1zeros(1,20)];y1filter=filter(b1,a1,x1);stem(n,y1filter);title('y1filter');xlabel('x');ylabel('y');02468101214161820-2-1.5-1-0.500.511.5y1filterxy(2)用conv函数a1=[1,0.75,0.125];b1=[1,-1];x1=[1zeros(1,10)];[h]=impz(b1,a1,10);y1conv=conv(h,x1);n=0:19;-3-stem(n,y1conv,'filled')02468101214161820-2-1.5-1-0.500.511.5(3)用impz函数a1=[1,0.75,0.125];b1=[1,-1];impz(b1,a1,21);02468101214161820-2-1.5-1-0.500.511.5n(samples)AmplitudeImpulseResponseb.单位阶跃响应:(1)用filter函数a1=[1,0.75,0.125];b1=[1,-1];n=0:20;x2=ones(1,21);y1filter=filter(b1,a1,x2);stem(n,y1filter);title('y1filter_step');xlabel('x');ylabel('y');-4-02468101214161820-0.8-0.6-0.4-0.200.20.40.60.81y1filterstepxy(2)用conv函数a1=[1,0.75,0.125];b1=[1,-1];x2=ones(1,21);[h]=impz(b1,a1,20);y1=conv(h,x2);y1conv=y1(1:21);n1=0:20;stem(n1,y1conv,'filled');title('y1conv');xlabel('n');ylabel('y1[n]');02468101214161820-0.8-0.6-0.4-0.200.20.40.60.81y1convny1[n]-5-2.编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。要求分别用filter、conv、impz三种函数完成。]}4[]3[]2[]1[{25.0][nxnxnxnxny给出理论计算结果和程序计算结果并讨论