资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
数字信号处理实验一:FFT算法的应用实验题目:实验1 FFT算法的应用 姓 名: 学 号: 上课时间: FFT算法的应用 1 实验目的: 离散傅氏变换(DFT)的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由逆DFT变换到时域。FFT是DFT的一种快速算法。在数字信号处理系统中,FFT作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核因素。 本实验通过使用MATLAB函数中的FFT命令计算离散时间信号的频谱,以加深对离散信号的DFT的理解及其FFT算法的运用。 2 实验要求: 对实验内容中给定的序列求给定点数N的FFT和IFFT,利用MATLAB编程完成计算,绘出相应图形。并与理论计算相比较,说明实验结果的原因。 3 实验原理: 一数字滤波器设计: (一)基2按时间抽取FFT算法 对于有限长离散数字信号xn,0 ? n ? N-1,其离散谱xk可以由离 X?k?xnen?0N?1?j(2?)nkNk?0,1,.,N?1散付氏变换(DFT)求得。DFT的定义为 可以方便的把它改写为如下形式: 不难看出,WN是周期性的,且周期为N,即 N?1nlN?0(n?mN)(k?)nkWN?WNnkX?k?xnWNk?0,1,.,N?1m,l?0,?1,?2.WN的周期性是DFT的关键性质之一。为了强调起见,常用表达式WN取代W以便明确其周期是N。 由DFT的定义可以看出,在xn为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。FFT的基本思想在于,将原有的N点序列序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N为偶数,将原有的N点序列分成两个(N/2)点序列,那么计算N点DFT将只需要约(N/2)2 2=N2/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即(N/2)点的DFT计算也可以化成两个(N/4)点的DFT(假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。比如,一个N = 8点的FFT运算按照这种方法来计算FFT可以用下面的流程图来表示: x(0)W0x(1)W0x(2)W0x(3)x(4)W0x(5)W0x(6)W0x(7)W2X(7)W3X(6)W2X(5)W2W0W1X(3)X(4)X(2)X(1)X(0) 关于蝶形结运算的具体原理及其推导可以参照讲义,在此就不再赘述。按频率抽取的FFT的原理也可查阅相关资料,这里就不再推导了。 二使用到的MATLAB命令: 函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若RN,则直接截取R点DFT的前N点,若R 2 / 2
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号