您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 数字信号除处理课程设计-DFT在信号频谱分析中的应用
课程设计课程名称数字信号处理系别:计算机科学系专业班级:通信一班题目:DFT在信号频谱分析中的应用2目录1、设计题目···········································32、设计目的···········································33、设计原理···········································34、实现方法···········································35、设计内容及结果·····································66、改进建议··········································127、思考题及解答······································158、设计体会··········································159、参考文献··········································163Ⅰ.设计题目DFT在信号频谱分析中的应用Ⅱ.设计目的掌握离散傅里叶变换的有关性质,利用Matlab实现DFT变换。了解DFT应用,用DFT对序列进行频谱分析,了解DFT算法存在的问题及改进方法。学习并掌握FFT的应用。Ⅲ.设计原理所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。数字计算机难于处理,因而我们采用DFT来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。Ⅳ.实现方法离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。快速傅里叶变换(FFT)并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要是基于这样的思路而发展起来的:(1)把长度为N的序列的DFT逐次分解成长度较短的序列的DFT来计算。(2)利用WN(nk)的周期性和对称性,在DFT运算中适当的分类,以提高运算速度。(对称性nkNnkNWWN2,12NNW;周期性nkNnkNnrNNkrNnN)(,r为任意整数,1nrNNW)离散傅里叶变换的推导:离散傅里叶级数定义为nkjNkppekxNnxN210)(1)(π(1-1)将上式两端乘以nmjNeπ2并对n在0~N-1求和可得410)(1101010)(10N2N2N2)()(1)(NnmknjNNkpNnNkmknjpNnnmjpekXekXNenxπππ因为mk1mk0)(N)(10)(N2N2N2-1-1N11mkjmkjNnmknjeeeNπππ所以1010)()()(N2NkpNnnmjpmkkXenxπ这样10N2)()(NnnmjppenxmXπ用k代替m得10N2)()(NnnkjpPenxkXπ(1-2)令N2πjNeW则(1-2)成为DFS10)()()(NnnkNpppWnxkXnx(1-3)(1-1)成为IDFS10)(1)()(NnnkNpppWkXNnxkX(1-4)式(1-3)、(1-4)式构成周期序列傅里叶级数变换关系。其中)()(kXnxpp、都是周期为N的周期序列,DFS[·]表示离散傅里叶级数正变换,IDFS[·]表示离散傅里叶级数反变换。习惯上,对于长为N的周期序列,把0nN-1区间称为主值区,把)1(~)0(Nxxpp称为)(nxp的主值序列,同样也称)1(~)0(NXXpp为)(kXp的主值序列。由于)()()(nRnxnxNp,对于周期序列)(nxp仅有N个独立样值,对于任何一个周期进行研究就可以得到它的全部信息。在主值区研究)(nxp与)(nx是等价的,因此在主值区计算DFS和DFT是相等的,所以DFT计算公式形式与DFS基本相同。其关系为)()()(nRnxnxNp)()()(kRkXkXNp所以离散傅里叶正变换WnkNNnnxnxDFTkX100kN-1离散傅里叶变换(DFT)定义:设有限长序列x(n)长为N(0nN-1),其离散傅里叶变换是一个长为N的频率有限长序列(0kN-1),其正变换为WnkNNnnxnxDFTkX100kN-1(WeNjNπ2)离散傅里叶变换的实质是:把有限长序列当做周期序列的主值序列进行DFS变换,x(n)、5X(k)的长度均为N,都是N个独立值,因此二者具有的信息量是相等的。已知x(n)可以唯一确定X(k),已知X(k)可以唯一确定x(n)。虽然离散傅里叶变换是两个有限长序列之间的变化,但它们是利用DFS关系推导出来的,因而隐含着周期性。构造离散傅里叶变换的Matlab实现程序如下:function[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk快速傅里叶变换(FFT)并不是与DFT不同的另外一种变换,而是为了减少DFT计算次数的一种快速有效的算法共轭对称性:设有限长序列)(nx的长度为N,以N为周期的周期延拓列为Nnxnx))(()(~周期序列)(~nx的共轭对称分量)(~nxe和共轭反对称分量)(~nxo分别为NNenNxnxnxnxnx))(())((21)()(21)(**~~~(1-5)NNonNxnxnxnxnx))(())((21)()(21)(**~~~(1-6)同样可以证明,它们满足)()(*~~nxnxee(1-7))()(*~~nxnxoo(1-8)则有限长序列)(nx的圆周共轭对称分量)(nxep和圆周共轭反对称分量)(nxop分别定义为:)(]))(())(([21)()()(*~nRnNxnxnRnxnxNNNNeep(1-9))(]))(())(([21)()()(*~nRnNxnxnRnxnxNNNNoop(1-10)由于满足)()()(~~~nxnxnxoe故)()()()]()([)()()(~~~nxnxnRnxnxnRnxnxopepNeN(1-11)显然,长度为N的有限长序列)(nx可以分解为圆周共轭对称分量)(nxep和圆周共轭反对称分量)(nxop之和,)(nxep和)(nxop的长度皆为N。利用有限长序列与周期序列的共轭对称分量和反对称分量的关系式(1-9)和式(1-10),以及式(1-11)可以推导出DFT的一系列的对称性质6(1)DFT)()()]([***KnXkXnx式中)(*nx表示)(nx的共轭复序列。证明:DFT)()()()]([*1010**kXWnxWnxnxNnNnnkNnkN又因为12)(N2njnNjnNNeeWππ所以DFT)()()]([**10)(*kNXWnxnxNnnkNN(2)复序列实部的DFT等于DFT的圆周共轭对称部分,即DFT)]()([21)()]}({Re[*kNXkXkXnxep证明:DFT)]}({Re[nxDFT)]}()([{*21nxnx=21{DFT)]([nx+DFT)]([*nx}=)()]()([*21kXkNXkXep利用DFT的对称性可求得n0cos的DFT:设njenjnnx000sincos)(则DFTkNojoNjkNojNkNNojWeeNnWeWenkNnjWekXnx1110110)()]([因为)](Re[cos0nxn所以DFT][cos0nDFT2)()(*)()]}({Re[kNXkXepkXnx=kNkNkNkNkNWojeNojekNWojeNojeWWNWWN200001111cos21)1cos(coscos12][Ⅴ.设计内容及结果1.用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。并与MATLAB中的内部函数文件fft.m作比较。解:x(n)的N点DFT的m函数文件dft.mfunction[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;7Xk=xn*WNnkMatlab中的内部函数文件fft.m文件function[varargout]=fft(varargin)ifnargout==0builtin('fft',varargin{:});else[varargout{1:nargout}]=builtin('fft',varargin{:});end运算量估计:对于N=M2点序列进行时间抽选奇偶分解FFT计算,需分M级,每级计算N/2个蝶。每一级需N/2次复乘、N次复加,因此总共需要进行:复乘:NMNN222log复加:NNNM2log直接计算N点的DFT,需要2N次复乘、N(N-1)次复加。N值越大,时间抽选奇偶分解FFT算法越优越。例如当N=2048点时,时间抽选奇偶分解FFT算法比直接计算DFT速度快300多倍可以用一下Matlab程序比较DFT和FFT的运算时间N=2048;M=11;x=[1:M,zeros(1,N-M)];t=cputime;y1=fft(x,N);Time_fft=cputime-tt1=cputime;y2=dft(x,N);Time_dft=cputime-t1t2=cputime;运行结果:Time_fft=0.0469Time_dft=15.2031由此可见FFT算法比直接计算DFT速度快得多82.对离散确定信号()cos(0.48)cos(0.52)xnnn作如下谱分析:截取()xn使()xn成为有限长序列N(0nN-1),(长度N自己选)写程序计算出()xn的N点DFT()Xk,画出时域序列图xn~n和相应的幅频图()~Xkk。解:1)求x(n)的前10点数据对应的X(ejw)、X(k)。MATLAB程序如下:N=10;n=0:1:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk=dft(xn,N);subplot(3,1,1)stem(n,xn,'.k');title('时域序列图xn');xlabel('n');axis([0,10,-2.5,2.5]);w=2*pi*(0:1:2047)/2048;Xw=xn*exp(-j*n'*w);subplot(3,1,2);plot(w/pi,abs(Xw));title('幅频特性曲线X(ejw)');xlabel('w');axis([0,1,0,10]);subplot(3,1,3)k1=0:1:9;w1=2*pi/10*k1;stem(w1/pi,abs(Xk),'.k');title('频域序列图Xk');xlabel('频率(单位:pi)');axis([0,1,0,10]);x(n)的前10点数据对应的x(n)、X(ejw)、X(k)如图1-1所示。9图1-1x(n)的前10点数据对应的x(n)、X(ejw)、X(k)由图可见,由于截断函数的频谱混叠作用,X(k)不能正确分辨w1=0.48π、w2=
本文标题:数字信号除处理课程设计-DFT在信号频谱分析中的应用
链接地址:https://www.777doc.com/doc-5549175 .html