




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、13.4 DFT3.4 DFT的快速算法的快速算法快速傅里叶快速傅里叶变换变换(FFT)(FFT)l DFT使计算机在频域处理信号成为可能,但是当N很大时,直接计算N点DFT的计算量非常大。l 快速傅里叶变换(FFT,Fast Fourier Transform)可使实现DFT的运算量下降几个数量级,从而使数字信号处理的速度大大提高,工程应用成为可能。l 人们已经研究出多种FFT算法,它们的复杂度和运算效率各不相同。 本章主要介绍最基本的基2 FFT算法及其编程方法。 23.4.1 3.4.1 直接计算直接计算DFTDFT的特点及减少运算量的的特点及减少运算量的基本途径基本途径DFTDFT计算
2、量:计算量: 长度为N的序列x(n)的N点DFT为 计算X(k)的每一个值需要计算N次复数乘法和N-1次复数加法,那么计算X(k)的N个值需要N2次复数乘法和(N-1)N次复数加法运算。当N1时,N点DFT的复数乘法和复数加法运算次数均与N2成正比。 ( )DFT ( )NX kx n 10( ) 0, 1, , 1Nk nNnx n WkN3DFTDFT减少运算量的基本途径:减少运算量的基本途径: 长序列分为短序列: 由于N点DFT的运算量随N2增长,因此,当N较大时, 减少运算量的途径之一就是将N点DFT分解为几个较 短的DFT进行计算,则可大大减少其运算量。 的周期性和对称性: 的周期性
3、:的周期性: 的对称性:的对称性:mNW 22j()jeem l Nmm l NmNNNNWW*()N mmNNWWmNW2NmmNNWW mNW4快速傅里叶变换就是不断地将长序列的DFT分解为短序列的DFT,并利用 的周期性和对称性及其一些特殊值来减少DFT运算量的快速算法。 mNW5 时间域抽取:时间域抽取:频率域抽取:频率域抽取:(2 )( )0,1,1(21)2xrNx nrxr 基基2时间抽取时间抽取(Decimation in time)DIT-FFT算法算法基基2频率抽取频率抽取(Decimation in frequency)DIF-FFT算法算法(2 )( )0,1,1(21
4、)2XmNX kmXm长序列分解为短序列的方法63.4.2 3.4.2 基基2 2 DIT-FFT DIT-FFT 算法算法 基2FFT要求DFT变换区间长度N=2M,M为自然数。 DIT-FFT算法 序列x(n)的N点DFT为 将上面的和式按n的奇偶性分解为 10( )DFT ( )( ) 0,1,1NknNNnX kx nx n WkN /2 1/2 12(21)00( )( )( )(2 )(21)k nk nNNnnNNk lklNNllX kx n Wx n Wxl WxlW为偶数为奇数7上式说明,按n的奇偶性将x(n)分解为两个N/2长的序列x1(l)和x2(l),则N点DFT可分
5、解为两个N/2点DFT来计算。 212/2/2 1/2 1/2/20012( ),( ),( ) 0(2 )( )(2,1),)1(1,k lk lNNNNk lkk lNNNllx lx lWWX kWWWkxxlxlx llN令因为,所以上式可写成 1212/2 111/21/20X ( )X ( )( )( )N/2DFT( )DFT ( )( ) 0,1,12Nk lNNlkkx lx lNX kx lx l Wk用和分别表示和的点,即(3.4.4)(3.4.5) /2 122/22/20( )DFT( )( ) 0,1,12NklNNlNX kx lx l Wk(3.4.6)/2 1
6、/2 12(21)00(21)2 )( )(NNk lklNNllxkWlXl Wx8将式(3.4.5)和式(3.4.6)代入式(3.4.4),并利用X1(k)、X2(k)的隐含周期性可得到 这样,就将N点DFT的计算分解为计算两个N/2点离散傅里叶变换X1(k)和X2(k),再计算式(3.4.7)。1212( )( )( ) 0,1,12( )( )2kNkNX kX kW XkNkNX kX kW Xk(3.4.7)2NkkNNWW /2 1/2 11/22/200( )( )( ) 0,1,1NNk lkk lNNNllX kx l WWx l WkN /2 111/21/20( )DF
7、T ( )( ) 0,1,12Nk lNNlNX kx lx l Wk /2 122/22/20( )DFT( )( ) 0,1,12NklNNlNX kx lx l Wk(3.4.4)(3.4.5)(3.4.6)9蝶形图 蝶形图及运算功能 8点DFT一次时域抽取分解运算流图 1212( )( )( ) 0,1,12( )( )2kNkNX kX kW XkNkNX kX kW Xk10运算量讨论两个N/2点DFT、N/2个蝶形N/2点DFT (N/2)2次复数乘法 (N/2-1)(N/2)次复数加法蝶形 1次复数乘法和两次复数加法2122(1)|2222222222NNNNNNNNNN2总的
8、复数乘法次数 ()总的复数加法次数 (-1)可见,经过一次抽取分解,当N1时,N点DFT运算量近似下降一半。118点DIT-FFT运算流图 N=821M 0,1,2,21 N=2 L=1,2,.,M2MLpJLNNMLWWJpJpNW旋转因子122. DIT-FFT的运算效率 DIT-FFT与DFT所需乘法次数比较曲线13由8点DIT-FFT运算流图可见,N=2M时,其DIT-FFT运算流图由M级蝶形构成,每级有N/2个蝶形。因此,每级需要N/2次复数乘法运算和N次复数加法运算,M级蝶形所需复数乘法次数CM(2)和复数加法次数CA(2)分别为直接计算N点DFT的复数乘法次数为N2,复数加法次数
9、为(N-1)N。当N1时,N2/CM(2) 1,所以N越大,DIT-FFT运算效率越高。DIT-FFT算法与DFT所需乘法次数与N的关系曲线见前页图示。 M2(2) log 22NNCMNA2(2) log CNMNN14例如 N=210=1024时,DIT-FFT的运算效率为而当N =211=2048时有 22M 1024204.81024(2)102NCDFT的乘法次数DIT-FFT的乘法次数22M222048 372.37(2)112NNNNCMM153. DIT-FFT的运算规律及编程思想 (1)原位计算 (2)旋转因子的变化规律 (3)蝶形运算规律 (4)序列的倒序 (5)编程思想1
10、6(1 1)原位计算)原位计算N=2M点的FFT共进行M级运算,每级由N/2个蝶形运算组成。同一级中,每个蝶形的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据节点又同在一条水平线上,这就意味着计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存储单元。这样,经过M级运算后,原来存放输入序列数据的N个存储单元(A(0),A(1),A(N-1)中便依次存放X(k)的N个值。这种利用同一存储单元存储蝶形计算输入、输出数据的方法称为原位(址)计算。节约内存单元,降低设备成本17(2)旋转因子的变化规律旋转因子的变化规律N点DIT-FFT运算流图中,每级都有N/2个蝶形。每个蝶形都
11、要乘以因子,称其为旋转因子,p称为旋转因子的指数。由于各级的旋转因子和循环方式都有所不同。为了编写计算程序,应先找出旋转因子 与运算级数的关系。用L表示从左到右的运算级数(L=1,2,M)。pNW18 由8点DIT-FFT运算流图可以发现,第L级共有2L-1个不同的旋转因子。N=23=8时的各级旋转因子表示如下: L=1时 L=2时 L=3时 对N=2M的一般情况,第L级的旋转因子为0pNNWW 02 , ppNNNNWWWW0123 , , ,ppppNNNNNNNNWWWWWWWW21 0,1,2,21MLpJLNNWWJ2MLpJ这样,就可按上面两个式子确定第L级运算的旋转因子。实际编程
12、序时,L为最外层循环变量19(3 3)蝶形运算规律)蝶形运算规律 设序列x(n)经时域抽选(倒序)后,存入数组A中。如果蝶形运算的两个输入数据相距B(B=2L-1)个点,应用原位计算,则蝶形运算可表示成如下形式: 式中下标L表示第L级运算,AL(J)则表示第L级运算后数组元素A(J)的值(即第L级蝶形的输出数据)。而AL-1(J)表示第L级运算前A(J)的值(即第L级蝶形的输入数据)。 11()( )()pLLLNA JBAJAJB W11( )( )()pLLLNA JAJAJB W12; 0,1,21; 1,2,MLLpJJLM一般来说,复数运算要转成实数运算20(4 4)序列的倒序)序列
13、的倒序 DIT-FFT算法的输出X(k)为自然顺序,但为了适应原位计算,其输入序列不是按x(n)的自然顺序排序,这种经过M-1次偶奇抽选后的排序称为序列x(n)的倒序(倒位)。 因此,在运算之前应先对序列x(n)进行倒序。21不按顺序排列顺 序倒 序十进制数I二进制数二进制数十进制数 J012345670 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 10 0 01 0 00 1 01 1 00 0 11 0 10 1 11 1 104261537(0),(1),(2),(7)XXXX(0),(1),(2),(7)xxxx 按顺序输出22(5)编程思想编程思想先从输
14、入端(第1级)开始,逐级进行,共进行M级运算。在进行第L级运算时,依次求出B=2L-1个不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有2M-L个蝶形。这样,我们可用三重循环程序实现DIT-FFT运算。21 0,1,2,212MLpJLNNMLWWJpJ2321 0,1,2,212MLpJLNNMLWWJpJ蝶形运算的两个输入数据相距B(B=2L-1)个点24思考对于N=8,一共有几级运算?每一级一共有多少个蝶形?每一级运算各有几个不同的旋转因子?每一级的每一个旋转因子用在几个蝶形上?N=16呢?254. IDFT的高效算法 上述FFT算法流图也可以用于IDFT。比较DFT和IDFT的
15、运算公式:只要将DFT运算式中的因子 改为 ,最后乘以1/N,就是IDFT的运算公式。所以,只要将上述的DIT-FFT算法中的旋转因子改为 ,最后的输出再乘以1/N,就可以用来计算IDFT。如果流图的输入是X(k),则输出就是x(n)。 1010( )DFT ( )( )1( )IDFT( )( )Nk nNnNk nNkX kx nx n Wx nX kX k WN k nNW k nNWpNW26我们还可以直接调用FFT子程序计算IFFT :由于对上式两边同时取共轭,得到这样,可以先将X(k)取共轭,然后直接调用FFT子程序,或者送入FFT专用硬件设备进行FFT运算,最后对FFT结果取共轭并乘以1/N得到序列x(n)。 101( )( )Nk nNkx nX k WN 1*01( )( )Nk nNkx nXk WN *1*011( )( )DFT( )Nk nNkx nXk WXkNN27写出直接调用FFT程序计算IFFT的算法1 将X(k)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木工支模合同范本
- 窗帘最好购销合同范本
- 楼房劳务施工合同范本
- 五一劳动节学生假期安全教育主题班会
- 农村荒山流转合同范本
- 吉林省四平市铁东区2024-2025学年七年级上学期期末考试数学试卷(含解析)
- 爱的智慧-二年级语文下册二单元第7课 《一匹出色的马》第二课时教学设计
- 农村建住房合同范本
- 防水门采购合同范本
- 2025混凝土搅拌车租赁合同
- 2024年农艺师考试实务考核试题及答案
- 纵隔恶性肿瘤护理查房
- 山东省烟台市芝罘区(五四制)2022-2023学年七年级下学期期中考试英语试题及答案
- 2024年贵州省交通运输厅所属事业单位招聘考试真题
- 深度学习入门试题及答案概述
- 固定资产管理制度实施细则
- 统编版语文五年级下册习作《形形色色的人》精美课件
- 2024-2025学年人教版数学八年级下册期中检测卷(含答案)
- 突发性聋诊疗指南
- 水力机械辅助设备安装质量评定表及填表说明
- 机械制图 点的投影 公开课PPT学习教案
评论
0/150
提交评论