设计一DFT在信号频谱分析中的应用一、设计题目DFT在信号频谱分析中的应用二、设计目的1.熟悉DFT的性质。2.加深理解信号频谱的概念及性质。3.了解高密度谱与高分辨率频谱的区别。三、设计原理信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而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求和可得10)(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)、X(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的一系列的对称性质(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作比较。程序如下:functionXk=dft(xn,N)iflength(xn)Nxn=[xn,zeros(1,N-length(xn))];endn=0:N-1;fork=0:N-1Xk(1,k+1)=sum(xn.*exp((-1)*j*n*k*(2*pi/N)));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速度快得多2.对离散确定信号()cos(0.48)cos(0.52)xnnn作如下谱分析:(1)截取()xn使()xn成为有限长序列N(0nN-1),写程序计算出()xn的N点DFT()Xk,画出时域序列图xn~n和相应的幅频图()~Xkk。程序如下:(假设N取15,即0≤n≤14时,编写程序,计算出X(n)的15点DFTXk)n=0:14;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk=fft(xn,15);subplot(2,1,1);stem(n,xn);grid;subplot(2,1,2);stem(n,abs(Xk));grid;(2)将(1)中()xn补零加长至M点,长度M自己选,(为了比较补零长短的影响,M可以取两次值,一次取较小的整数,一次取较大的整数),编写程序计算()xn的M点DFT,画出时域序列图和两次补零后相应的DFT幅频图。程序如下:(假设M取20和M取65,即分别补5个0和50个0,得补零后20点的序列xn1和65点的序列xn2,编写程序,计算出xn1的20点DFTXk1和xn2的65点DFTXk2)n=0:14;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=0:19;xn1=[xn,zeros(1,5)];n2=0:64;xn2=[xn,zeros(1,50)];Xk1=fft(xn1,20);Xk2=fft(xn2,65);subplot(3,1,1);stem(n,xn);grid;subplot(3,1,2);stem(n1,abs(Xk1));grid;subplot(3,1,3);stem(n2,abs(Xk2));grid;(2)用补零DFT计算(1)中N点有限长序列()xn频谱()jXe并画出相应的幅频图()~jXe。程序如下:(假设M取150)n=0:14;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=0:149;xn3=[xn,zeros(1,135)];Xk3=fft(xn3,150);plot(n1,abs(Xk3));grid;3.研究高密度谱与高分辨率频谱。对连续确定信号333()cos(26.510)cos(2710)cos(2910)axtttt以采样频率fs=32kHz对信号()axt采样得离散信号()xn,分析下列三种情况的幅频特性。(1)采集数据()xn长度取N=16点,编写程序计算出()xn的16点DFT()Xk,并画出相应的幅频图()~Xkk。(2)采集数据()xn长度N=16点,补零加长至45点,利用补零DFT计算()xn的频谱1()jXe并画出相应的幅频图1()~jXe。(3)采集数据()xn长度取为45点,编写程序计算出M点采集数据()xn的的频谱2()jXe并画出相应的幅频图2()~jXe。程序如下:T=1/(32*10^3);t=(0:15);xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);Xk=fft