第四章-快速傅里叶变换FFT_第1页
第四章-快速傅里叶变换FFT_第2页
第四章-快速傅里叶变换FFT_第3页
第四章-快速傅里叶变换FFT_第4页
第四章-快速傅里叶变换FFT_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 快速傅里叶变换 2021/8/61第4章 快速傅里叶变换 2021/8/624.1 引言引言 4.2 直接计算直接计算DFT的问题及改进的途径的问题及改进的途径 4.3 按时间抽取(按时间抽取(DIT)的基)的基2-FFT算法算法4.4 按频率抽取(按频率抽取(DIF)的基)的基2-FFT算法算法4.5 离散傅里叶反变换(离散傅里叶反变换(IDFT)的快速计算方法)的快速计算方法 4.6 线性卷积的线性卷积的FFT算法算法快速卷积快速卷积4.7 FFT的其他应用的其他应用第4章 快速傅里叶变换 2021/8/63本章学习目标本章学习目标 理解按时间抽选的基-2FFT算法的算法原理、运算

2、流图、所需计算量和算法特点 理解按频率抽选的基-2FFT算法的算法原理、运算流图、所需计算量和算法特点 了解IFFT算法 理解线性卷积的FFT算法及分段卷积算法第4章 快速傅里叶变换 2021/8/644.1 引引 言言 快速傅里叶变换(FFT)并不是一种新的变换, 而是离散傅里叶变换(DFT)的一种快速算法。 由于有限长序列在其频域也可离散化为有限长序列,由于有限长序列在其频域也可离散化为有限长序列,因此离散傅里叶变换(因此离散傅里叶变换(DFT)在数字信号处理中是非常有)在数字信号处理中是非常有用的。用的。例如,在信号的频谱分析、 系统的分析、 设计和实现中都会用到DFT的计算。 但是,在

3、相当长的时间里, 由于DFT的计算量太大,即使采用计算机也很难对问题进行实时处理,所以并没有得到真正的运用。 直到1965年首次发现了DFT运算的一种快速算法以后,情况才发生了根本的变化。第4章 快速傅里叶变换 2021/8/65人们开始认识到DFT运算的一些内在规律,从而很快地发展和完善了一套高速有效的运算方法, 这就是现在人们普遍称之为快速傅里叶变换(FFT)的算法。 FFT出现后使DFT的运算大大简化,运算时间一般可缩短一二个数量级之多,从而使DFT的运算在实际中真正得到了广泛的应用。本章主要介绍最基本的基2-FFT算法及其编程思想。 第4章 快速傅里叶变换 2021/8/664.2 直

4、接计算直接计算DFT的问题及改进的途径的问题及改进的途径 设x(n)为N点有限长序列,其DFT为 10)()(NnnkNWnxkXk=0, 1, , N-1 (4-1) 反变换(IDFT)为 10)(1)(NknkNWkXNnxn=0, 1, , N-1 (4-2) 4.2.1 直接计算直接计算DFT的运算量问题的运算量问题第4章 快速傅里叶变换 2021/8/67复数乘法直接计算的运算量复数加法一个X(k)值N次(N-1)次N个X(k)值N2次N(N-1)次实数乘法实数加法一个X(k)值4N次2N+2(N-1)次N个X(k)值4N2次2N(2N-1)次第4章 快速傅里叶变换 2021/8/6

5、8 例例1 根据式(4-1),对一幅NN点的二维图像进行DFT变换,如用每秒可做10万次复数乘法的计算机,当N=1024时,问需要多少时间(不考虑加法运算时间)?解:解: 直接计算DFT所需复乘次数为(N2)21012次,因此用每秒可做10万次复数乘法的计算机,则需要近3000小时。 这对实时性很强的信号处理来说,要么提高计算速度,而这样,对计算速度的要求太高了。另外,只能通过改进对DFT的计算方法,以大大减少运算次数。 第4章 快速傅里叶变换 2021/8/694.2.2 改善途径改善途径 能否减少运算量,从而缩短计算时间呢?仔细观察DFT的运算就可看出, 利用系数Wnk的以下固有特性,就可

6、减少运算量: (1) WNnk的对称性 (2) WNnk的周期性 )()(NknNkNnNnkNWWWknNNnkNNknNknNWWWW)()(*)(第4章 快速傅里叶变换 2021/8/610(3) WNnk的可约性 另外 kNNkNNNnkNknNNkNnNWWWWWW)2/(2/)()(, 1,2mnkmNjmnkmNknNeWWmnkmNknNWW/ FFT算法的基本思想:利用DFT系数的特性,合并DFT运算中的某些项,把长序列DFT转换成短序列DFT,从而减少其运算量。 FFT算法分类:1.时域抽选法FFT(DIT-FFT) 2.频域抽选法FFT(DIF-FFT)第4章 快速傅里叶

7、变换 2021/8/6114.3 按时间抽取(按时间抽取(DIT)的基)的基 -2 FFT算法算法 设序列x(n)长度为N,且满足且满足N=2L,L为正整数为正整数。按按n的的奇偶把奇偶把x(n)分解为两个分解为两个N/2点的子序列点的子序列: 12, 1 , 0)() 12()()2(21Nrrxrxrxrx(4-4) 4.3.1 算法原理算法原理第4章 快速傅里叶变换 2021/8/612则可将DFT化为 rkNNrkNrkNNrkrNNrrkNNrNnnnkNNnNnnnkNnkNWrxWWrxWrxWrxWnxWnxWnxnxDFTkX)()( )() 12()2()()()()()(

8、2120221201)12(1202120101010为奇数为偶数由于 , 故上式可表示成 2/)2/(2222NNjNjNWeeW)()()()()(212/21202/1120kXWkXWrxWWrxkXkNrkNNrkNrkNNr(4-5) 第4章 快速傅里叶变换 2021/8/613式中,X1(k)与X2(k)分别是x1(r)及x2(r)的N/2点DFT: 1202/1202/221202/1202/11) 12()()()2()()(NrrkNNrrkNNrrkNNrrkNWrxWrxkXWrxWrxkX(4-6) (4-7) 由此,我们可以看到,一个N点DFT已分解成两个N/2点的

9、DFT。 这两个N/2点的DFT再按照式(4-5)组合成一个N点DFT。这里应该看到X1(k),X2(k)只有N/2个点,即k=0, 1, , N/2-1。而X(k)却有N个点,即k=0, 1, , N-1, 故用式(4-5)计算得到的只是X(k)的前一半的结果,要用X1(k),X2(k)来表达全部的X(k)值,还必须应用系数的周期性, 即 第4章 快速傅里叶变换 2021/8/614rkNNkrNWW2/22/这样可得到 )()()(212/120122/12011kXWrxWrxkNXrkNNrkNrNNr(4-8) 同理可得 )(222kXkNX(4-9) 式(4-8)、式(4-9)说明

10、了后半部分k值(N/2kN-1)所对应的X1(k),2(k)分别等于前半部分k值(0kN/2-1)所对应的X1(k),X2(k)。 第4章 快速傅里叶变换 2021/8/615再考虑到WkN 的以下性质: 这样,把式(4-8)、式(4-9)、式(4-10)代入式(4-5),就可将X(k)表达为前后两部分: kNkNNNkNNWWWW2/2(4-10) 12, 1 , 0)()()(21NkkXWkXkXkN(4-11) )()(22221221kXWkXNkXWNkXNkXkNNkN12, 1 , 0Nk(4-12) 第4章 快速傅里叶变换 2021/8/616图 4-1 时间抽取法蝶形运算流

11、图符号 X2(k)X1(k)kNW1X1(k)kNWX2(k)X1(k)kNWX2(k)第4章 快速傅里叶变换 2021/8/617图 4-2 按时间抽取将一个N点DFT分解 为两个N/2点DFT(N=8) X1(0)X1(1)x1(0) x(0)X(0)X(1)X1(2)X1(3)110NWDFT2点Nx1(1) x(2)x1(2) x(4)x1(3) x(6)X(2)X(3)X2(0)X2(1)x2(0) x(1)X(4)X(5)X2(2)X2(3)DFT2点Nx2(1) x(3)x2(2) x(5)x2(3) x(7)X(6)X(7)1NW2NW3NW11第4章 快速傅里叶变换 2021

12、/8/618一次分解后的运算量一个N/2点DFTN/2次N次(N/2)2次N/2(N/2-1)次总计一个蝶形复数乘法复数加法两个N/2点DFTN2/2次N(N/2-1)次1次2次N/2个蝶形N2/2+N/2N2/2N(N/2-1)+N N2/2经一次分解,运算量减少近一半第4章 快速傅里叶变换 2021/8/61914, 1 , 0)() 12()()2(4131Nllxlxlxlx(4-13) 14, 1 , 0)()()()() 12()2()(42/31404/42/1404/3140)12(2/114022/11NkkXWkXWlxWWlxWlxWlxkXkNNllkNkNNllkNN

13、lklNNllkN 与第一次分解相同,将x1(r)按奇偶分解成两个N/4长的子序列x3(l)和x4(l),即第4章 快速傅里叶变换 2021/8/620且 )()(442/31kXWkXkNXkN14, 1 , 0Nk式中: 1404/441404/33)()()()(NllkNNllkNWlxkXWlxkX(4-14) (4-15) 图4-3给出N=8时,将一个N/2点DFT分解成两个N/4点DFT, 由这两个N/4点DFT组合成一个N/2点DFT的流图。 第4章 快速傅里叶变换 2021/8/621图 4-3 N/2点DFT分解为两个N/4点DFT DFT4点NX3(0)X3(1)x3(0

14、) x1(0) x(0)x3(1) x1(2) x(4)X1(0)X1(1)DFT4点NX4(0)X4(1)x4(0) x1(1) x(2)x4(1) x1(3) x(6)X1(2)X1(3)1102/NW12/NW第4章 快速傅里叶变换 2021/8/622X2(k)也可进行同样的分解: )()(4)()()(62/5262/52kXWkXkNXkXWkXkXkNkN14, 1 , 0Nk式中: 1404/21404/661404/21404/55) 12()()()2()()(NllkNNllkNNllkNNllkNWlxWlxkXWlxWlxkX(4-16)(4-17)第4章 快速傅里叶

15、变换 2021/8/623图 4-4 一个N=8点DFT分解为四个N/4点DFT DFT4点NX3(0)X3(1)x3(0) x1(0) x(0)x3(1) x1(2) x(4)X1(0)X1(1)DFT4点NX4(0)X4(1)x4(0) x1(1) x(2)x4(1) x1(3) x(6)X1(2)X1(3)110NW2NWX(0)X(1)X(2)X(3)DFT4点NX5(0)X5(1)x5(0) x2(0) x(1)x5(1) x2(2) x(5)X2(0)X2(1)DFT4点NX6(0)X6(1)x6(0) x2(1) x(3)x6(1) x2(3) x(7)X2(2)X2(3)11X

16、(4)X(5)X(6)X(7)0NW1NW2NW3NW11110NW2NW第4章 快速傅里叶变换 2021/8/6241 , 0,)()()(4/1034/14/033kWlxWlxkXklNlklNNl)4()0() 1 ()0() 1 ()4()0() 1 ()0()0(0312023303020233xWxxWWxXxWxxWWxXNN1 , 0,)()()(4/1044/14/044kWlxWlxkXklNlklNNl)6()2() 1 ()0() 1 ()6()2() 1 ()0()0(0412024404020244xWxxWWxXxWxxWWxXNN 这种方法的每一步分解,都是按

17、输入序列在时间上的次序是属于偶数还是属于奇数来分解为两个更短的子序列,所以称为“按时间抽取法按时间抽取法”。 第4章 快速傅里叶变换 2021/8/625图 4-5 N=8 按时间抽取的FFT运算流图x(0)X(0)x(4)X(1)10NWx(2)X(2)x(6)X(3)10NW0NW2NW11x(1)X(4)x(5)X(5)10NWx(3)X(6)x(7)X(7)10NW0NW2NW110NW1NW2NW3NW1111第4章 快速傅里叶变换 2021/8/626 由按时间抽取法FFT的流图可见,当N=2L时,共有L级蝶形, 每级都由N/2个蝶形运算组成,每个蝶形需要一次复乘、 二次复加,因而

18、每级运算都需N/2次复乘和N次复加,这样L级运算总共需要 复乘数 NNNLaNogNLNmFF22log122复加数 4.3.2 按时间抽取的按时间抽取的FFT算法与直接计算算法与直接计算DFT运算量的比较运算量的比较例如,N=210=1024时221048576204.8(/2)log5120NNN第4章 快速傅里叶变换 2021/8/627图4-6 FFT算法与直接计算DFT所需乘法次数的比较曲线 第4章 快速傅里叶变换 2021/8/628例:例: 用FFT算法处理一幅NN点的二维图像,如用每秒可做10万次复数乘法的计算机,当N=1024时,问需要多少时间(不考虑加法运算时间)?解:解:

19、 当N=1024点时,FFT算法处理一幅二维图像所需复数乘法约为 次,仅为直接计算DFT所需时间的10万分之一。 即原需要3000小时,现在只需要2 分钟。 72221012NogN第4章 快速傅里叶变换 2021/8/6294.3.3 按时间抽取的按时间抽取的FFT算法的特点算法的特点 1. 原位运算(同址运算)原位运算(同址运算) 从图4-5可以看出这种运算是很有规律的,其每级(每列)计算都是由N/2 个蝶形运算构成的,每一个蝶形结构完成下述基本迭代运算: rNmmmrNmmmWjXkXjXWjXkXkX)()()()()()(1111(4-21a) (4-21b) 式中,m表示第m列迭代

20、,k, j为数据所在行数。式(4-21)的蝶形运算如图4-7所示,由一次复乘和两次复加(减)组成。 第4章 快速傅里叶变换 2021/8/630图 4-7 蝶形运算单元 1rNWXm 1(k)Xm 1( j)Xm(k) Xm 1(k) Xm 1( j)Xm( j) Xm 1(k) Xm 1( j)rNWrNW第4章 快速傅里叶变换 2021/8/631 由图4-5的流图看出,某一列的任何两个节点k和j的节点变量进行蝶形运算后,得到结果为下一列k, j两节点的节点变量,而和其他节点变量无关,因而可以采用原位运算, 即某一列的N个数据送到存储器后,经蝶形运算,其结果为下一列数据,它们以蝶形为单位仍

21、存储在这同一组存储器中,直到最后输出,中间无需其他存储器。也就是蝶形的两个输出值仍放回蝶形的两个输入所在的存储器中。 每列的N/2 个蝶形运算全部完成后, 再开始下一列的蝶形运算。 这样存储器数据只需N个存储单元。 下一级的运算仍采用这种原位方式,只不过进入蝶形结的组合关系有所不同。 这种原位运算结构可以节省存储单元, 降低设备成本。 第4章 快速傅里叶变换 2021/8/632 2. 倒位序规律倒位序规律 观察图4-5的同址计算结构,发现当运算完成后,FFT的输出X(k)按正常顺序排列在存储单元中,即按X(0),X(1),X(7)的顺序排列,但是这时输入x(n)却不是按自然顺序存储的,而是按

22、x(0),x(4), , x(7)的顺序存入存储单元,看起来好像是“混乱无序”的,实际上是有规律的,我们称之为倒位序。 第4章 快速傅里叶变换 2021/8/633图4-8 倒位序的形成 x(000)x(100)x(010)x(110)010101x(001)x(101)x(011)x(111)01010101x(n2n1n0)n2n1n0第4章 快速傅里叶变换 2021/8/634表表4-2 N=8时的自然顺序二进制数和相应的倒位序二进制数时的自然顺序二进制数和相应的倒位序二进制数 自然顺序(I) 二进制数 倒位序二进制数 倒位序(J) 012345670000010100111001011

23、1011100010001011000110101111104261537第4章 快速傅里叶变换 2021/8/635图 4-9 N=8 倒位序的变址处理 存 储 单 元自 然 顺 序 输 入变 址倒 位 序A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)x(0)x(1)x(2)x(3)x(4)x(5)x(6)x(7)x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)第4章 快速傅里叶变换 2021/8/636 3. 蝶形运算两节点的蝶形运算两节点的“距离距离” 以图 4-5 的8点FFT为例,其输入是倒位序的,输出是自然顺序的。 其第一级(第一列)每个蝶形的两节

24、点间“距离”为1, 第二级每个蝶形的两节点“距离”为2, 第三级每个蝶形的两节点“距离”为4。 由此类推得,对对N=2L点点FFT,当输入为倒位序,当输入为倒位序, 输输出为正常顺序时,其第出为正常顺序时,其第m级运算,每个蝶形的两节点级运算,每个蝶形的两节点“距离距离”为为2m-1。 第4章 快速傅里叶变换 2021/8/6374. WNr的确定的确定 由于对第m级运算,一个DIT蝶形运算的两节点“距离”为2m-1, 因而式(4-21)可写成: rNmmmmmrNmmmmWkXkXkXWkXkXkX)2()()2()2()()(1111111(4-22a) (4-22b) 为了完成上两式运算

25、,还必须知道系数Nr的变换规律。仔细观察图4-5的流图可以发现r的变换规律是: 把式(4-22)中蝶形运算两节点中的第一个节点标号值, 即k值,表示成L位(注意N=2L)二进制数; 第4章 快速傅里叶变换 2021/8/638 把此二进制数乘上2L-m,即将此L位二进制数左移L-m位(注意m是第m级运算),把右边空出的位置补零, 此数即为所求r的二进制数。 从图4-5看出,WNr因子最后一列有N/2种,顺序为WN0, WN1, , 其余可类推。 12NNW第4章 快速傅里叶变换 2021/8/6394.3.4 按时间抽取的按时间抽取的FFT算法的其他形式流图算法的其他形式流图 显然,对于任何流

26、图,只要保持各节点所连的支路及传输系数不变,则不论节点位置怎么排列所得流图总是等效的,所得最后结果都是x(n)的DFT的正确结果,只是数据的提取和存放的次序不同而已。这样就可得到按时间抽取的FFT算法的若干其他形式流图。 将图4-5中和x(4)水平相连的所有节点和x(1)水平相连的所有节点位置对调,再将和x(6)水平相连的所有节点与和x(3)水平相连的所有节点对调,其余诸节点保持不变,可得图4-10的流图。 图4-10与图4-5的蝶形相同,运算量也一样,不同点是: 第4章 快速傅里叶变换 2021/8/640 数据存放的方式不同,图4-5是输入倒位序、输出自 然顺序,图4-10是输入自然顺序、

27、输出倒位序 取用系数的顺序不同,图4-5的最后一列是按 的顺序取用系数,且其前一列所用系 数是后一列所用系数中具有偶数幂的那些系数(例 如);图4-10是最后一列是按 的顺序取用系数,且其前一列所用系数是后一列所用 系数的前一半, 这种流图是最初由库利和图基给出的 时间抽取法。 经过简单变换,也可得输入与输出都是按自然顺 序排列的流图以及其他各种形式的流图 。3210,NNNNWWWW,20NNWW3120,NNNNWWWW第4章 快速傅里叶变换 2021/8/641图 4-10 时间抽取、 输入自然顺序、 输出倒位序的FFT流图 0NW0NW0NW2NW1110NW10NW2NW1111X(

28、0)x(0)X(4)x(1)X(2)x(2)X(6)x(3)X(1)x(4)X(5)x(5)X(3)x(6)X(7)x(7)110NW0NW2NW1NW3NW11第4章 快速傅里叶变换 2021/8/6424.4 按频率抽选(按频率抽选(DIF)的基)的基 -2 FFT算法算法 仍设序列点数为N=2L,L为正整数。在把输出X(k)按k的奇偶分组之前,先把输入序列按前一半、后一半分开(不是按偶数、 奇数分开), 把N点DFT写成两部分。 nkNNnNkNkNnNNnnkNNnNNnnkNNnnkNNnnkNWWNnxnxWNnxWnxWnxWnxWnxkX1202/212012012101202

29、)(2)()()()()(k=0, 1, , N-1 4.4.1 算法原理算法原理第4章 快速傅里叶变换 2021/8/643由于 ,故,可得12/NNWkNkNW) 1(2/nkNNnkWNnxnxkX1202) 1()()( k=0, 1, , N-1 (4-23) 当k为偶数时,(-1)k=1;k为奇数时,(-1)k=-1。因此,按k的奇偶可将X(k)分为两部分: nrNNnnrNNnWNnxnxWNnxnxrX2/12021202)(2)()2(12, 1 , 0Nr(4-24a) 第4章 快速傅里叶变换 2021/8/644nrNNnnNrnNNnWWNnxnxWNnxnxrX2/1

30、2/0)12(12/02)(2)() 12(12, 1 , 0Nr(4-24b) 式(4-24a)为前一半输入与后一半输入之和的N/2点DFT, 式(4-24b)为前一半输入与后一半输入之差再与WNn之积的N/2点DFT。 令:第4章 快速傅里叶变换 2021/8/645nNWNnxnxnxNnxnxnx2)()(2)()(2112, 1 , 0Nn(4-25) 图 4-14 频率抽取法蝶形运算单元 1x(n)x(n N / 2)nNWx(n) x(n N / 2)x(n) x(n N / 2)nNW第4章 快速傅里叶变换 2021/8/646 这样,我们就把一个N点DFT按k的奇偶分解为两个

31、N/2点的DFT了。 N=8时,上述分解过程示于图4-15。 与时间抽取法的推导过程一样,由于N=2L,N/2仍是一个偶数,因而可以将每个N/2点DFT的输出再分解为偶数组与奇数组,这就将N/2点DFT进一步分解为两个N/4 点DFT。 这两个N/4点DFT的输入也是先将N/2点DFT的输入上下对半分开后通过蝶形运算而形成的,图4-16示出了这一步分解的过程。 第4章 快速傅里叶变换 2021/8/647图 4-15 按频率抽取的第一次分解 X(0)X(2)110NWDFT2点NX(4)X(6)X(1)X(3)DFT2点NX(5)X(7)1NW2NW3NW11x(0)x(1)x(2)x(3)x

32、(4)x(5)x(6)x(7)第4章 快速傅里叶变换 2021/8/648图 4-16 按频率抽取的第二次分解 DFT4点N110NW2NWx(0)x(1)x(2)x(3)11x(4)x(5)x(6)x(7)0NW1NW2NW3NWDFT4点NDFT4点NDFT4点NX(0)X(4)X(2)X(6)X(1)X(5)X(3)X(7)0NW2NW1111第4章 快速傅里叶变换 2021/8/649 这样的分解可以一直进行到第L次(N=2L),第L次实际上是做两点DFT,它只有加减运算。 然而,为了有统一的运算结构,仍然用一个系数为WN0的蝶形运算来表示, 这N/2个两点DFT的N个输出就是x(n)

33、的N点DFT的结果X(k)。 图4-17表示一个N=8 完整的按频率抽取的基-2 FFT运算结构。 第4章 快速傅里叶变换 2021/8/650图 4-17 按频率抽取的FFT(N=8)信号流图 1 10NW2NWx(0)x(1)x(2)x(3) 1 1x(4)x(5)x(6)x(7)0NW1NW2NW3NWX(0)X(4)X(2)X(6)X(1)X(5)X(3)X(7)0NW2NW 1 1 1 1 1 1 1 10NW0NW0NW0NW第4章 快速傅里叶变换 2021/8/6514.4.2 按频率抽取法的运算特点按频率抽取法的运算特点 1.原位运算原位运算 L级蝶形,每级N/2个蝶形运算。每

34、一个蝶形结构完成下述基本迭代运算: 式中,m表示m列迭代,k,j为整数所在行数,此式的蝶形运算如图4-18所示,也需要一次复乘和两次复加。 rNmmmmmmWjXkXjXjXkXkX)()()()()()(1111(4-26)第4章 快速傅里叶变换 2021/8/652图 4-18 频率抽取法蝶形运算单元 1rNWXm1(k)Xm1( j)Xm(k) Xm1(k) Xm1( j)Xm( j) Xm1(k) Xm1( j)rNW第4章 快速傅里叶变换 2021/8/653 2. 蝶形运算两节点的蝶形运算两节点的“距离距离” 以图 4-17 的8点FFT为例,其第一级(第一列)每个蝶形的两节点间“

35、距离”为4, 第二级每个蝶形的两节点“距离”为2, 第三级每个蝶形的两节点“距离”为1。 由此类推得,每个蝶形的两节点每个蝶形的两节点“距离距离”为为2L-m=N/2m。 第m级蝶形为rNmmmmmmmmmWNkXkXNkXNkXkXkX)2()()2()2()()(1111(4-27)第4章 快速傅里叶变换 2021/8/6543. WNr的确定的确定 仔细观察图4-17的流图可以发现r的变换规律是: 把式(4-27)中蝶形运算两节点中的第一个节点标号值, 即k值,表示成L位(注意N=2L)二进制数; 把此二进制数乘上2m-1,即将此L位二进制数左移m-1位(注意m是第m级运算),把右边空出

36、的位置补零, 此数即为所求r的二进制数。 WNr因 子 第 一 列 有 N / 2 种 , 顺 序 为 WN0, WN1, , 其余可类推。 12NNW第4章 快速傅里叶变换 2021/8/655 基本蝶形不同 DIF:先减后复乘 DIT:先复乘后加减。 运算量相同 mF=(N/2) log2N aF=N log2N 都可原位运算 DIT与DIF的基本蝶形互为转置4.4.3 DIT与与DIF的异同的异同第4章 快速傅里叶变换 2021/8/656一一 . IDFT的高效算法的高效算法 上述FFT算法流图也可以用于离散傅里叶逆变换比较DFT和IDFT的运算公式: knNNkknNNnWkXNnx

37、IDFTnxWnxnxDFTkX1010)(1)()()()()(4.5 IDFT的快速算法的快速算法IFFT 第4章 快速傅里叶变换 2021/8/65711X(1)1111111111X(2)X(3)X(4)X(6)X(5)X(7)X(0)x(4)x(0)x(2)x(6)x(5)x(1)x(3)x(7)0NW3NW0NW2NW2NW1NW2NW0NW0NW0NW0NW0NWN1N1N1N1N1N1N1N1第4章 快速傅里叶变换 2021/8/65811X(1)1111111111X(2)X(3)X(4)X(6)X(5)X(7)X(0)x(4)x(0)x(2)x(6)x(5)x(1)x(3)

38、x(7)021NW321NW021NW221NW221NW121NW221NW021NW021NW021NW021NW021NW212121212121212121212121图 4-19 DIT-IFFT流图第4章 快速傅里叶变换 2021/8/659 如果希望直接调用FFT子程序计算IFFT,则可用下面的方法: 由于 10101( )( )1( )( )NknNkNknNkx nX k WNx nXk WN对上式两边同时取共轭,得1011( )( )( )NknNkx nXk WDFT XkNN第4章 快速傅里叶变换 2021/8/6604.6 线性卷积的线性卷积的FFT算法算法快速卷积快

39、速卷积 以FIR滤波器为例,因为它的输出等于有限长单位脉冲响应h(n)与有限长输入信号x(n)的离散线性卷积。 设x(n)为L点,h(n)为M点, 输出y(n)为 :10)()()(Mmmnxmhny第4章 快速傅里叶变换 2021/8/661 下面首先讨论直接计算线性卷积的运算量。 由于每一个x(n)的输入值都必须和全部的h(n)值相乘一次,因而总共需要LM次乘法,这就是直接计算的乘法次数,以md表示为 md=LM 用FFT算法也就是用圆周卷积来代替这一线性卷积时,为了不产生混叠,其必要条件是使x(n),h(n)都补零值点,补到至少N=M+L-1, 即: 0)()(nxnx0nL-1 LnN

40、-1 0)()(nhnh0nM-1 MnN-1 第4章 快速傅里叶变换 2021/8/662然后计算圆周卷积 )()()(nhnxnyN这时,y(n)就能代表线性卷积的结果。 用FFT计算y(n)的步骤如下: 求H(k)=DFTh(n),N点; 求X(k)=DFTx(n), N点; 计算Y(k)=X(k)H(k); 求y(n)=IDFTY(k),N点。 第4章 快速傅里叶变换 2021/8/663 步骤、都可用FFT来完成。 此时的工作量如下: 三次FFT运算共需要 次相乘,还有步骤的N次相乘,因此共需要相乘次数为 NN2log23NNNNNmF22log231log23 比较直接计算线性卷积

41、(简称直接法)和FFT法计算线性卷积(简称FFT法)这两种方法的乘法次数。则 ) 1(1231) 1(1231LMbLMMLbNNMLmmKFdm第4章 快速傅里叶变换 2021/8/664 分两种情况讨论如下: (1)x(n)与h(n)点数差不多。 例如,M=L,则N=2M-12M,则 MMMMKm22log35log23252这样可得下表: M=L8163264128256512102420484096Km0.572 0.9411.62.785.928.821629.2453.999.9 当M=8 时,FFT法的运算量大于直接法;当M=32 时,二者相当;当M=512 时,FFT法运算速度

42、可快16倍;当M=4096 时, FFT法约快100倍。可以看出,当M=L且M超过32以后,M越长, FFT法的好处越明显。因而将圆周卷积称为快速卷积。 第4章 快速傅里叶变换 2021/8/665(2) 当x(n)的点数很多时,即当LM。通常不允许等x(n)全部采集齐后再进行卷积; 否则,使输出相对于输入有较长的延时。此外,若N=L+M-1 太大,h(n)必须补很多个零值点,很不经济,且FFT的计算时间也要很长。这时FFT法的优点就表现不出来了,因此需要采用分段卷积或称分段过滤的办法。即将x(n)分成点数和h(n)相仿的段,分别求出每段的卷积结果,然后用一定方式把它们合在一起,便得到总的输出

43、,其中每一段的卷积均采用FFT方法处理。有两种分段卷积的办法: 重叠相加法重叠相加法和重叠保留法。和重叠保留法。 第4章 快速傅里叶变换 2021/8/666 重叠相加法重叠相加法 设h(n)的点数为M,信号x(n)为很长的序列。我们将x(n)分解为很多段,每段为L点,L选择成和M的数量级相同,用xi(n)表示x(n)的第i段: 0)()(nxnxiiLn(i+1)L-1 其他n i=0, 1, 则输入序列可表示成 0)()(iinxnx第4章 快速傅里叶变换 2021/8/667这样,x(n)和h(n)的线性卷积等于各xi(n)与h(n)的线性卷积之和,即 0)()()()()(iinhnx

44、nhnxny 每一个xi(n)*h(n)都可用上面讨论的快速卷积办法来运算。 由于xi(n)*h(n)为L+M-1 点,故先对xi(n)及h(n)补零值点,补到N点。 为便于利用基-2 FFT算法,一般取N=2mL+M-1,然后作N点的圆周卷积: )()()(nhnxnyiiN 由于xi(n)为L点,而yi(n)为(L+M-1)点(设N=L+M-1), 故相邻两段输出序列必然有(M-1)个点发生重叠,即前一段的后(M-1)个点和后一段的前(M-1)个点相重叠,如图4-20 所示。应该将重叠部分相加再和不重叠的部分共同组成输出y(n)。 第4章 快速傅里叶变换 2021/8/668图 4-20

45、重叠相加法图形 h(n)0N1M1x(n)0L2L3LnnnnnL10 x0(n)N10 x1(n)L2L1L N13L10 x2(n)2L2L N1第4章 快速傅里叶变换 2021/8/669图 4-20 重叠相加法图形 nnnN10y0(n) x0(n) h(n)N2L2L N100L N1Ly1(n) x1(n) h(n)Ny2(n) x2(n) h(n)N第4章 快速傅里叶变换 2021/8/670图 重叠相加法卷积示意图 M0NMMx1(n)x0(n)x2(n)N M 1N M 1y0(n)y1(n)N M 1y2(n)2MM3M N 10N 1y(n) y0(n) y1(n) y2

46、(n) nnnnnnh(n)第4章 快速傅里叶变换 2021/8/671和上面的讨论一样, 用FFT法实现重叠相加法的步骤如下: 计算N点FFT, H(k)=DFTh(n); 计算N点FFT,Xi(k)=DFTxi(n); 相乘,Yi(k)=Xi(k)H(k); 计算N点IFFT,yi(n)=IDFTYi(k); 将各段yi(n)(包括重叠部分)相加, 重叠相加的名称是由于各输出段的重叠部分相加而得名的。 )()(0nynyii第4章 快速傅里叶变换 2021/8/672 重叠保留法重叠保留法 此方法与上述方法稍有不同。先将x(n)分段,每段L=N-M+1个点,这是相同的。 不同之处是,序列中

47、补零处不补零,而在每一段的前边补上前一段保留下来的(M-1)个输入序列值, 组成L+M-1点序列xi(n),如图4-21(a)所示。如果L+M-12m, 则可在每段序列末端补零值点,补到长度为2m,这时如果用DFT实现h(n)和xi(n)圆周卷积,则其每段圆周卷积结果的前(M-1)个点的值不等于线性卷积值,必须舍去。 第4章 快速傅里叶变换 2021/8/673图 4-21 a 重叠保留法示意图 nN1M2N1LM2L0 x0(n)x1(n)0nx2(n)N1nLM20(a)第4章 快速傅里叶变换 2021/8/674图 4-21 b 重叠保留法示意图 y0(n)0M2M1N1ny1(n)0M

48、1M2N1y2(n)M2M1N1nn(b)第4章 快速傅里叶变换 2021/8/675图图 4-22 用保留信号代替补零后的局部混叠现象用保留信号代替补零后的局部混叠现象 mmm0h(m)M1N1xi(m)0N1N1h(0 m)NRN(m)n00(a)(b)(c)第4章 快速傅里叶变换 2021/8/676图图 4-22用保留信号代替补零后的局部混叠现象用保留信号代替补零后的局部混叠现象 mmmnN1h(M2 m)NRN(m)n M2N1h(M1 m)NRN(m)n M1N1h(N1 m)NRN(m)n N1N1M2yi(n)0000(d)(e)(f )(g)第4章 快速傅里叶变换 2021/

49、8/677 为了说明以上说法的正确性,我们来看一看图4-22。任一段xi(n)(为N点)与h(n)(原为M点,补零值后也为N点)的N点圆周卷积 10)()()()()()(NmNNiiinRmnhmxnhnxnyN由于h(m)为M点,补零后作N点圆周移位时,在n=0,1,M-2的每一种情况下,h(n-m)NRN(m)在0mN-1范围的末端出现非零值, 而此处xi(m)是有数值存在的,图4-22(c),(d)为n=0, n=M-2的情况,所以在 0nM-2 第4章 快速傅里叶变换 2021/8/678 这一部分的yi(n)值中将混入xi(m)尾部与h(n-m)NRN(m)尾部的乘积值,从而使这些

50、点的yi(n)不同于线性卷积结果。但是从n=M-1开始到n=N-1,h(n-m)NRN(m)=h(n-m)(如图4-22(e),(f)所示),圆周卷积值完全与线性卷积值一样,yi(n)就是正确的线性卷积值。因而必须把每一段圆周卷积结果的前(M-1)个值去掉, 如图4-22(g)所示。 因此,为了不造成输出信号的遗漏,对输入分段时,就需要使相邻两段有M-1个点重叠(对于第一段,即x0(n),由于没有前一段保留信号,则需要在序列前填充M-1 个零值点),这样,若原输入序列为x(n)(n0 时有值),则应重新定义输入序列 第4章 快速傅里叶变换 2021/8/679)1( 0)(Mnxnx0nM-2

51、 M-1n 而 0)1()(MNinxnxi0nN-1 其他n i=0, 1, 第4章 快速傅里叶变换 2021/8/680 在这一公式中,已经把每一段的时间原点放在该段的起始点,而不是x(n)的原点。这种分段方法示于图4-21中,每段xi(n)和h(n)的圆周卷积结果以yi(n)表示,如图 4-21(b)所示,图中已标出每一段输出段开始的(M-1)个点,0nM-2部分舍掉不用。把相邻各输出段留下的序列衔接起来,就构成了最后的正确输出, 即 0)1()(iiMNinyny式中: 0)()(nynyiiM-1nN-1 其他n 这时,每段输出的时间原点放在yi (n)的起始点,而不是y(n)的原点

52、。 第4章 快速傅里叶变换 2021/8/6814.7 FFT的其他应用的其他应用 4.7.1 信号消噪信号消噪 假设信号在传输过程中,受到噪声的干扰,则在接收端得到的信号由于受到噪声的干扰,信号将难以辨识。用FFT方法消噪就是对含噪信号的频谱进行处理,将噪声所在频段的X(k)值全部置零后,再对处理后的X(k)进行离散傅里叶反变换(IFFT)可得原信号的近似结果。这种方法要求噪声与信号的频谱不在同一频段, 否则, 将很难处理。 第4章 快速傅里叶变换 2021/8/682 例例 将上述消噪原理用于语音消噪。图一 是一个实际例子,语音信号受到了强烈的啸叫噪声干扰,无法听清语音意思, 如图一(a), 信号淹没在噪声中(信噪比只有-10dB)。试用FFT方法消噪。 先作FFT分析,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论