信息科学与技术学院本科三年级数字信号处理实验报告2011年12月21日实验一序列的傅立叶变换实验目的进一步加深理解DFS,DFT算法的原理;研究补零问题;快速傅立叶变换(FFT)的应用。实验步骤1.复习DFS和DFT的定义,性质和应用;2.熟悉MATLAB语言的命令窗口、编程窗口和图形窗口的使用;利用提供的程序例子编写实验用程序;按实验内容上机实验,并进行实验结果分析;写出完整的实验报告,并将程序附在后面。实验内容1.周期方波序列的频谱试画出下面四种情况下的的幅度频谱,并分析补零后,对信号频谱的影响。实验结果:60,7)4(;60,5)3(;40,5)2(;20,5)1()](~[)(~,2,1,01)1(,01,1)(~NLNLNLNLnxDFSkXmNmnLmNLmNnmNnx)52.0cos()48.0cos()(nnnx2.有限长序列x(n)的DFT(1)取x(n)(n=0:10)时,画出x(n)的频谱X(k)的幅度;(2)将(1)中的x(n)以补零的方式,使x(n)加长到(n:0~100)时,画出x(n)的频谱X(k)的幅度;(3)取x(n)(n:0~100)时,画出x(n)的频谱X(k)的幅度。利用FFT进行谱分析已知:模拟信号以t=0.01n(n=0:N-1)进行采样,求N点DFT的幅值谱。请分别画出N=45;N=50;N=55;N=60时的幅值曲线。实验结果:X(n)补零后:)8cos(5)4sin(2)(tttx以t=0.01n(n=0:N-1)进行采样,N点DFT的幅值谱:实验代码:%内容1%L=5;N=20;L=5;N=20;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N)Xk(1:N/2+1)]);k=[-N/2:N/2];figure(1)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)');title('DFSofSQ.wave:L=5,N=20');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');%L=5;N=40;L=5;N=40;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N)Xk(1:N/2+1)]);k=[-N/2:N/2];figure(2)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)');title('DFSofSQ.wave:L=5,N=40');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');%L=5;N=60;L=5;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N)Xk(1:N/2+1)]);k=[-N/2:N/2];figure(3)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)');title('DFSofSQ.wave:L=5,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');%L=5;N=20;L=7;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N)Xk(1:N/2+1)]);k=[-N/2:N/2];figure(4)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)');title('DFSofSQ.wave:L=7,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');%内容2xn=cos(0.48*pi*n)+cos(0.52*pi*n);%²»²¹ÁãM=10;N=10;n=1:M;n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)];figure(1)subplot(2,1,1);stem(n1,y1);xlabel('n');title('signalx(n),0=n=100');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('SamplesofDTFTMagnitude');stem(w1/pi,magY1);axis([0,1,0,10]);xlabel('frequencyinpiunits');%²¹ÁãºóM=10;N=100;n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)];figure(2)subplot(2,1,1);stem(n1,y1);xlabel('n');title('signalx(n),0=n=100');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('SamplesofDTFTMagnitude');stem(w1/pi,magY1);axis([0,1,0,10]);xlabel('frequencyinpiunits');%内容3figure(1)subplot(2,2,1)N=45;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('FFTN=45')%subplot(2,2,2)N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))title('FFTN=50')%subplot(2,2,3)N=55;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))title('FFTN=55')%subplot(2,2,4)N=60;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))title('FFTN=60')实验二用双线性变换法设计IIR数字滤波器一、实验目的1.熟悉用双线性变换法设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。二、实验内容1.用双线性变换法设计一个巴特沃斯低通IIR滤波器,设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π,π]频率区间上,最小衰减大于15dB。2.以0.2π为采样间隔,打印出数字滤波器在频率区间[0,0.2π]上的幅值响应曲线。3.用所设计的滤波器对实际的心电图信号采样序列x(n)(见教科书上254页实验二的第六部分)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。实验结果:滤波器幅频特性及相频特性图:滤波器幅值函数:滤波器工作效果:代码:figure(1)Wp=0.2;Rp=1;Ws=0.3;Rs=15;[n,Wn]=buttord(Wp,Ws,Rp,Rs);[b,a]=butter(n,Wn);freqz(b,a,512,2);[h,f]=freqz(b,a,25,1);figure(2)subplot(2,1,1)stem(f,h);xlabel('f(x*pirad/sample)');ylabel('h');subplot(2,1,2);stem(f,abs(h));xlabel('f(x*pirad/sample)');ylabel('|h|');%输入心电图数据xn=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];N=length(xn);Xk=fft(xn);figure(3)subplot(2,2,1);stem(xn);title('滤波前心电图时域波形');subplot(2,2,2);stem(Xk);title('滤波前心电图频域波形');yn=filter(b,a,xn);Yk=filter(b,a,Xk);subplot(2,2,4);stem(Yk);title('滤波后心电图频域波形');subplot(2,2,3);stem(yn);title('滤波后心电图时域波形’);实验三用窗函数法设计FIR数字滤波器1.实验目的及原理方法参考(301~302)页2.实验内容用MATLAB产生各种窗函数利用窗函数设计FIR滤波器(1)用MATLAB实现各种窗函数1、矩形窗2、汉宁窗3、海明窗4、布莱克曼窗(2)利用窗函数设计FIR滤波器设计具有下列指标p=0.25,Rp=0.25dB,s=0.3,Rp=50dB的低通数字滤波器。要求:选择合适的窗函数;画出滤波器的频率特性;实验结果:矩形窗:红色汉宁窗:绿色海明窗:黄色布莱克曼窗:蓝色符合要求的滤波器特性:通带波纹:Rp=0.0394阻带最小衰减:As=52代码:%窗函数figure(1);m=200;a=boxcar(m);%矩形窗b=hanning(m);%汉宁窗c=hamming(m);%海明窗d=blackman(m);%布莱曼窗m=1:200;plot(m,a,'r*',m,b,'g+',m,c,'y*',m,d,'b.')%选取海明窗截取wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;n=[0:1:M-1];wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(hamming(M))';h=hd.*w_ham;[db,mag,pha,grd,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)));%PassbandRippleAs=-round(max(db(ws/delta_w+1:1:501)));%MinStopbandattenuation%plotsfigure(2);subplot(2,2,1);stem(n,hd);title('IdealImpulseresponse')axis([0M-1-0.10.3]);ylabel('hd(n)')subplot(2,2,2);stem(n,w_ham);title('HammingWindow')ax