资源描述:
《数字信号处理实验报告(全)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一、离散时间系统及离散卷积1、单位脉冲响应源程序:functionpr1()%定义函数pr1a=[1,-1,0.9];%定义差分方程y(n)-y(n-1)+0.9y(n-2)=x(n)b=1;x=impseq(0,-40,140);%调用impseq函数n=-40:140;%定义n从-40到140h=filter(b,a,x);%调用函数给纵座标赋值figure(1)%绘图figure1(冲激响应)stem(n,h);%在图中绘出冲激title('冲激响应');%定义标题为:'冲激响应'xlabel('n');%绘图横
2、座标为nylabel('h(n)');%绘图纵座标为h(n)figure(2)%绘图figure2[z,p,g]=tf2zp(b,a);%绘出零极点图zplane(z,p)function[x,n]=impseq(n0,n1,n2)%声明impseq函数n=[n1:n2];x=[(n-n0)==0];结果:Figure1:Figure2:1、离散系统的幅频、相频的分析源程序:functionpr2()b=[0.0181,0.0543,0.0543,0.0181];a=[1.000,-1.76,1.1829,-0.2781]
3、;m=0:length(b)-1;%m从0到3l=0:length(a)-1;%l从0到3K=5000;k=1:K;w=pi*k/K;%角频率wH=(b*exp(-j*m'*w))./(a*exp(-j*l'*w));%对系统函数的定义magH=abs(H);%magH为幅度angH=angle(H);%angH为相位figure(1)subplot(2,1,1);%在同一窗口的上半部分绘图plot(w/pi,magH);%绘制w(pi)-magH的图形grid;axis([0,1,0,1]);%限制横纵座标从0到1xla
4、bel('w(pi)');%x座标为w(pi)ylabel('
5、H
6、');%y座标为angle(H)title('幅度,相位响应');%图的标题为:'幅度,相位响应'subplot(2,1,2);%在同一窗口的下半部分绘图plot(w/pi,angH);%绘制w(pi)-angH的图形grid;%为座标添加名称xlabel('w(pi)');%x座标为w(pi)ylabel('angle(H)');%y座标为angle(H)结果:3、卷积计算源程序:functionpr3()n=-5:50;%声明n从-5到50u1=ste
7、pseq(0,-5,50);%调用stepseq函数声用明u1=u(n)u2=stepseq(10,-5,50);%调用stepseq函数声用明u2=u(n-10)%输入x(n)和冲激响应h(n)x=u1-u2;%x(n)=u(n)-u(n-10)h=((0.9).^n).*u1;%h(n)=0.9^n*u(n)figure(1)subplot(3,1,1);%绘制第一个子图stem(n,x);%绘制图中的冲激axis([-5,50,0,2]);%限定横纵座标的范围title('输入序列');%规定标题为:'输入序列'xl
8、abel('n');%横轴为nylabel('x(n)');%纵轴为x(n)subplot(3,1,2);%绘制第二个子图stem(n,h);%绘制图中的冲激axis([-5,50,0,2]);%限定横纵座标的范围title('冲激响应序列');%规定标题为:'冲激响应序列'xlabel('n');%横轴为nylabel('h(n)');%纵轴为h(n)%输出响应[y,ny]=conv_m(x,n,h,n);%调用conv_m函数subplot(3,1,3);%绘制第三个子图stem(ny,y);axis([-5,50,0
9、,8]);title('输出响应');%规定标题为:'输出响应'xlabel('n');ylabel('y(n)');%纵轴为y(n)%stepseq.m子程序%实现当n>=n0时x(n)的值为1function[x,n]=stepseq(n0,n1,n2)n=n1:n2;x=[(n-n0)>=0];%con_m的子程序%实现卷积的计算function[y,ny]=conv_m(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=
10、conv(x,h);结果:实验二、离散傅立叶变换与快速傅立叶变换1、离散傅立叶变换(DFT)源程序:functionpr4()F=50;N=64;T=0.000625;n=1:N;x=cos(2*pi*F*n*T);%x(n)=cos(pi*n/16)subplot(2,1,1);%绘制第一个子图x(n