《第二次DSP上机实验报告 MATLAB实验报告.doc》由会员分享,可在线阅读,更多相关《第二次DSP上机实验报告 MATLAB实验报告.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二次DSP上机实验报告 MATLAB实验报告第二次DSP上机实验报告 MATLAB实验报告北京邮电大学信息与通信工程学院DSP-MATLAB实验报告实验名称:学生姓名:班级:班内序号:学号:日期:1实验要求与目的要求:(1)用DFT分析频谱,得到高分辨率频谱清楚的谱线;(2)利用基2时间抽选的FFT算法,计算有限点的DFT,并与理论值相比较。目的:掌握(a)用傅立叶变换进行信号分析时基本参数的选择。(b)经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT)后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。(c)离散傅立叶变换的基
2、本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。(d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。2关键算法分析第1页北京邮电大学信息与通信工程学院代码的重点是利用fft函数计算离散序列的DFT,难点是矩阵的加减乘除及乘方中所涉及的matlab语句的特点。实验代码如下:(1)N=1000;n=(0:N-1);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);y=0.001*cos(0.45*n*pi)+sin(0
3、.3*n*pi)-cos(0.302*n*pi-pi/4);XK=fft(y,N);-fft函数两个参数分别是进行DFT变换的序列,及DFT的长度subplot(3,1,1);stem(n,y);title(时域波形);xlabel(n);ylabel(y);subplot(3,1,2);stem(abs(XK),.);axis(0,500,0,600);-限定x轴与y轴的范围title(频域前500点波形);xlabel(k);ylabel(XK);subplot(3,1,3);stem(abs(XK),.);axis(800,900,0,600);-x轴的范围很小,目的是能看到两条很近的谱
4、线title(频域后500点部分波形);xlabel(k);ylabel(XK);(2)N=25;Q=0.9+j*0.3;n=(0:24);x=Q.n;WN=exp(-j*2*pi/N);k=(0:24);WK=WN.k;XK=(1-Q.N)./(1-Q*WK);stem(XK);-理论值的计算XK1=fft(x,32);-32点基2时间抽选法的计算subplot(3,1,1);stem(n,x);title(时域波形);xlabel(n);ylabel(x);subplot(3,1,2);stem(XK);title(频域理论值);xlabel(k);ylabel(XK);subplot(3
5、,1,3);stem(XK1);title(频域波形);xlabel(k);ylabel(XK1);第2页北京邮电大学信息与通信工程学院3.程序运行结果(1)(2)第3页北京邮电大学信息与通信工程学院4.问题分析这次实验的题目相对简单,编程过程中遇到的问题主要是矩阵的加减乘除及乘方运算所对应的matlab语句的规则和fft函数的使用,fft函数的使用方法通过help语句便可查得,其两个参数:第一个是指进行fft运算的序列,第二个值fft运算的长度。而矩阵的运算规则需要上网查看相关资料或与同学讨论解决。总的来说,这次实验比第一次编程时语句的运用要熟练,而且编程比较顺利5.心得与总结第一次用mat
6、lab编程时遇到了很多困难,其实现在想一下,用matlab编程时第4页北京邮电大学信息与通信工程学院不愁没有时间编,就愁拿出了好多时间,但真到编时总是报错,又找不到错在哪里。这是让人很纠结的。这次编程我放弃了闭门造车,一个人冥思苦想的方式,而是在编的过程中与同学讨论,互相纠错,最后相对顺利的把程序编了出来。另一个比较有感触的是熟能生巧。第一次编程时什么都不懂,遇到不会编的语句就到网上去查,查到语句后又不知道那些语句中的参数代表什么,通过老师课上的讲解,我学会了用help语句,而且也积累了一些基本的函数,像axis,subplot,stem等,所以显示波形的操作做起来就比较得心应手了,多练习总是
7、有好处的。第5页扩展阅读:数字信号处理上机实验报告数字信号处理上机实验报告实验一熟悉MATLAB环境一、实验目的1、熟悉MATLAB的主要操作命令。2、学会简单的矩阵输入和数据读写。3、掌握简单的绘图命令。4、用MATLAB编程并学会创建函数。5、观察离散系统的频率响应。二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉MATLAB基本命令的基础上,完成以下实验。上机实验内容:1、数组的加减乘除和乘方运算,输入A求CAB,1234,B3456,DAB,EA.B,FA./B,GA.B,并用stem语句画出A、B、C、D、E、F、G。程序:A=12
8、34;B=3456;C=A+B;D=A-B;E=A.*B;F=A./B;G=A.B;subplot(2,4,1);stem(A,.);subplot(2,4,2);stem(B,.);subplot(2,4,3);stem(C,.);subplot(2,4,4);stem(D,.);subplot(2,4,5);stem(E,.);subplot(2,4,6);stem(F,.);subplot(2,4,7);stem(G,.)2、用MATLAB实现下列序列。a)x(n)0.8n0n15b)x(n)e(0.23j)n0n15n0.2)2sin(0.25n0.1)0n15c)x(n)3cos(0
9、.125程序:A)clear;clc;n=0:15;x1=0.8.n;subplot(3,1,1),stem(x1)title(x1=0.8n)xlabel(n);ylabel(x1);B)clear;clc;n=0:15;x2=exp(0.2+3j)*n);subplot(3,1,1),stem(x2)title(x2=exp(0.2+3j)*n)xlabel(n);ylabel(x2);C)clear;clc;n=0:15;x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi);subplot(3,1,1),stem(x3)title(x3=
10、3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)xlabel(n);ylabel(x3);3、绘出下列时间常数的图形,对x轴,y轴以及图形上方均须加上适当的标注:0t10sa)x(t)sin(2t)100t)sin(t)0t4sb)x(t)cos(m=0:0.01:10;n=0:0.01:4;x1t=sin(2*pi*m);x2t=cos(100*pi*n).*sin(pi*n);subplot(2,1,1);plot(m,x1t);subplot(2,1,2);plot(n,x2t);4、给定一因果系统H(z)=(1+2zz)/(1-0.67z
11、的幅频响应与相频响应。b=1,sqrt(2),1;a=1,-0.67,0.9;h,w=freqz(b,a);am=20*log10(abs(h);%am=20*log10(abs(h)为幅频响应取dBsubplot(2,1,1);-1-21z2),求出并绘制H(z)plot(w,abs(h);xlabel(w);ylabel(幅频响应);title(系统响应)ph=angle(h);subplot(2,1,2);plot(w,ph);xlabel(w);ylabel(相频响应);5、计算序列8-2-123和序列23-1-3的离散卷积,并作图表示卷积结果。a=8-2-123;b=23-1-3;c
12、=conv(a,b);M=length(c)-1;n=0:1:M;stem(n,c);xlabel(n);ylabel(幅度);6、求以下差分方程所描述系统的单位脉冲响应h(n),0n50:y(n)0.1y(n1)0.06y(n2)x(n)2x(n1)程序:N=50;a=1-2;b=10.1-0.06;x=1zeros(1,N-1);k=0:1:N-1;y=filter(a,b,x);stem(k,y);xlabel(n);ylabel(幅度);实验二快速傅里叶变换(FFT)及其应用一、实验目的1、在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。2、应用FFT
13、对典型信号进行频谱分析。3、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。4、应用FFT实现序列的线性卷积和相关。二、实验内容实验中用到的信号序列a)高斯序列npq0n15xa(n)e0其他2b)衰减正弦序列ensin(2fn)0n15xb(n)0其他c)三角波序列0n3nxc(n)8n4n70其他d)反三角波序列0n34nxd(n)n44n70其他上机实验内容:(1)观察三角波和反三角波序列的时域和幅频特性,用N8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。程序:n=0:3;k=1
14、:8;Xc(n+1)=n;Xc(n+5)=4-n;Xd(n+1)=4-n;Xd(n+5)=n;三角波特性subplot(2,2,1);plot(k-1,Xc);xlabel(n);ylabel(时域特性);text(1,3,三角波);subplot(2,2,2);plot(k-1,abs(fft(Xc);xlabel(k);ylabel(幅频特性);text(4,10,三角波);反三角波特性subplot(2,2,3);plot(k-1,Xd);xlabel(n);ylabel(时域特性);text(3,3,反三角波);subplot(2,2,4);plot(k-1,abs(fft(Xd);x
15、label(k);ylabel(幅频特性);text(4,10,反三角波);在xc(n)和xd(n)末尾补零,用N32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况下的FFT频谱还有相同之处吗?这些变化说明了什么?程序:n=0:3;k=1:32;Xc(n+1)=n;Xc(n+5)=4-n;Xd(n+1)=4-n;Xd(n+5)=n;Xc(9:32)=0;Xd(9:32)=0;k=1:32;figure;subplot(2,2,1);plot(k-1,Xc);xlabel(n);ylabel(时域特性);text(1,3,三角波);subplot(2,2,2);plot(
16、k-1,abs(fft(Xc);xlabel(k);ylabel(幅频特性);text(4,10,三角波);subplot(2,2,3);plot(k-1,Xd);xlabel(n);ylabel(时域特性);text(3,3,反三角波);subplot(2,2,4);plot(k-1,abs(fft(Xd);xlabel(k);ylabel(幅频特性);text(4,10,反三角波);的16(2)用FFT分别计算xa(n)p8,q2和xb(n)0.1,f0.0625点循环卷积和线性卷积。程序:n1=0:1:15;p1=8;q1=2;x=exp(-(n1-p1).2/q1);n2=0:1:15
17、;a=0.1;f2=0.0625;y=(exp(-a*n2).*sin(2*pi*f2*n2);N=length(x);n=0:N-1;n3=0:30;X=fft(x);Y=fft(y);x32=xzeros(1,16);y32=yzeros(1,16);X32=fft(x32);Y32=fft(y32);z16=ifft(X.*Y);z32=ifft(X32.*Y32);subplot(2,2,1);plot(n,z16,-*);xlabel(n);ylabel(z(n);title(循环卷积结果);subplot(2,2,2);plot(n3,z32(1:2*N-1),-o);xlabel
18、(n);ylabel(z(n);title(线性卷积结果);rm16=real(ifft(conj(X).*Y);rm32_0=real(ifft(conj(X32).*Y32);rm32=rm32_0(N+2:2*N)rm32_0(1:N);m=n;11subplot(2,2,3);plot(m,rm16,-);xlabel(m);ylabel(rm);title(循环相关结果);m=-(N-1):N-1;subplot(2,2,4);plot(m,rm32,-o);xlabel(m);ylabel(rm);title(线性相关结果);(3)产生一512点随机序列x,并用x和x作线性卷积,观
19、察卷(en)en)cn)积前后x频谱变化。要求将x分成8段,分别采用重叠相加法和重叠保留(en)en)法。程序:n=0:7;m=1:512xc(1:4)=n(1:4);xc(5:8)=8-n(5:8);xe=rand(1,512);Xek=fft(xe);hk=fft(xc,128);subplot(3,1,1);stem(m,Xek);xlabel(n);ylabel(Xek);title(卷积前序列);forj=1:8;x(j,:)=xe(64*(j-1)+1:64*j);xk(j,:)=fft(x(j,:),128);end;y=zeros(1,576);fori=1:8y=y+f(i,
20、:);endsubplot(3,1,2);m=0:518;plot(m,abs(fft(y(1:519);axis(0,518,0,250);xlabel(k);ylabel(频域);title(重叠相加法幅频特性)x2(1,1:71)=zeros(1,7)xe(1:64);forj=2:8f(j,(64*(j-1)+1):(64*(j-1)+128)=ifft(xk(j,:).*hk);x2(j,:)=xe(64*(j-1)-6):(64*j);endx2(9,:)=xe(506:512),zeros(1,64);forj=1:9xk2(j,:)=fft(x2(j,:),128);f2(j,
21、:)=ifft(xk2(j,:).*hk);end;y2=zeros(1,576);fori=1:9y2(1,64*(i-1)+1:64*i)=f2(i,8:71);endsubplot(3,1,3);m=0:518;plot(m,abs(fft(y2(1:519);axis(0,518,0,250);xlabel(k);ylabel(频域);title(重叠保留法幅频特性)(4)用FFT分别计算xa(n)p8,q2和xb(n)0.1,f0.0625的自相关函数。程序:N=16;n=0:N-1;p=8;q=2;Xa(n+1)=exp(-(n-p).2./q);a=0.1;f=0.0625;Xb
22、(n+1)=exp(-a.*n).*sin(2*pi*f.*n);N=length(Xa);Fa=fft(Xa,2*N);Fb=fft(Xb,2*N);F1=conj(Fa).*Fa;X81=real(ifft(F1);X81=X81(N+2:2*N)X81(1:N);n=(-N+1):(N-1);subplot(2,1,1);stem(n,X81);xlabel(n);ylabel(幅度);Fb=fft(Xb,2*N);F2=conj(Fb).*Fb;X82=real(ifft(F2);X82=X82(N+2:2*N)X82(1:N);%n=(-N+1):(N-1);subplot(2,1,2);stem(n,X82);xlabel(n);ylabel(幅度);小结:1.熟悉了MATLAB的主要操作命令,学会了简单的绘图命令,会用MATLAB编程并学会创建函数,能通过图像观察离散系统的频率响应。2.在理论学习的基础上,通过本实验,加深了对FFT的理解,熟悉MATLAB中的有关函数。能够应用FFT对典型信号进行频谱分析,从而了解应用FFT进行信号频谱分析过程中可出现的问题,学会了应用FFT实现序列的线性卷积和相关。第 10 页 共 10 页