DSP--FFT-深入浅出-详细讲解快速傅里叶变换.ppt
《DSP--FFT-深入浅出-详细讲解快速傅里叶变换.ppt》由会员分享,可在线阅读,更多相关《DSP--FFT-深入浅出-详细讲解快速傅里叶变换.ppt(172页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一节第一节 引引 言言一、快速付里叶变换一、快速付里叶变换FFT 有限长序列通过离散傅里叶变换 (DFT)将其频 域离散化成有限长序列.但其计算量太大(与N的平方成正比), 很难 实时地处理问题 , 因 此 引 出 了 快 速 傅 里 叶 变 换(FFT) . FFT 并 不 是 一 种 新 的 变 换 形 式 ,它 只 是 DFT 的 一 种 快快 速速 算算 法法 . 并 且 根 据 对 序 列 分 解 与 选 取 方 法 的 不 同 而 产 生 了 FFT 的 多 种 算 法 . FFT 在 离 散 傅 里 叶 反 变 换 、 线 性 卷 积 和 线 性 相 关 等 方 面 也 有 重
2、 要 应 用.。二、FFT产生故事 当时加文(Garwin)在自已的研究中极需要一个计算付里叶变换的快速方法。他注意到图基(J.W.Turkey)正在写有关付里叶变换的文章,因此详细询问了图基关于计算付里叶变换的技术知识。图基概括地对加文介绍了一种方法,它实质上就是后来的著名的库利(Cooley J.W)图基算法。在加文的迫切要求下,库利很快设计出一个计算机程序。1965年库利-图基在、Mathematic of Computation 杂志上发表了著名的“机器计算付里级数的一种算法”文章,提出一种快速计算DFT的方法和计算机程序-揭开了FFT发展史上的第一页,促使FFT算法产生原因还有196
3、7年至1968年间FFT的数字硬件制成,电子数字计算机的条件, 使DFT的运算大简化了。三、本章主要内容 1.直接计算DFT算法存在的问题及改进途径。 2.多种DFT算法(时间抽取算法DIT算法,频率抽取算法DIF算法,线性调频Z变换即CZT法) 3.FFT的应用第二节直接计算DFT算法存在的问题及改进途径一、直接计算一、直接计算DFT计算量计算量 问题提出: 设有限长序列x(n),非零值长度为N,计算对x(n)进行一次DFT运算,共需多大的运算工作量?1.比较DFT与IDFT之间的运算量10)()()(NnknNDFTWnxkXnx1, 1 , 0Nk 10)()()(NkknNIDFTWk
4、XnxkX1, 1 , 0Nn其中x(n)为复数, 也为复数所以DFT与IDFT二者计算量相同。knNjknNeW22.以DFT为例,计算DFT复数运算量 计算一个X(k)(一个频率成分)值,运算量为例k=1则要进行N次复数乘法+(N-1)次复数加法所以,要完成整个DFT运算,其计算量为:N*N次复数相乘和次复数相乘和N*(N-1)次复数加法次复数加法10)() 1 (NnnNWnxX3.一次复数乘法换算成实数运算量 复数运算要比加法运算复杂,需要的运算时间长。 一个复数乘法包括4个实数乘法和个实数乘法和2个实数相个实数相法法。(a+jb)(c+jd)=(ac-bd)+j(bc+ad) 4次实
5、数乘法2次实数加法4.计算DFT需要的实数运算量 每运算一个X(k)的值,需要进行4N次实数相乘和 2N+2(N-1)=2(2N-1)次实数相加.整个DFT运算量为:4N2次实数相乘和次实数相乘和2N(2N-1)次次实数相加实数相加.由此看出:直接计算DFT时,乘法次数与加法次数都是和N2成比例的。当N很大时,所需工作量非常可观。)Re)(ImIm)(Re) Im)(ImRe)(Re)(10knNknNNnknNknNWnxWnxjWnxWnxkX例子 例1:当N=1024点时,直接计算DFT需要:N2=220=1048576次,即一百多万次的复乘运算这对实时性很强的信号处理(如雷达信号处理)
6、来讲,它对计算速度有十分苛刻的要求-迫切需要改进DFT的计算方法,以减少总的运算次数。 例2:石油勘探,24道记录,每道波形记录长度5秒,若每秒抽样500点/秒,每道总抽样点数=500*5=2500点24道总抽样点数=24*2500=6万点DFT运算时间=N2=(60000)2=36*108次作业二、改善DFT运算效率的基本途径利用DFT运算的系数 的固有对称性和周期性,改善DFT的运算效率。1.合并法:合并DFT运算中的某些项。3. 分解法:将长序列DFT利用对称性和周期性,分解为短序列DFT。knNW利用DFT运算的系数 的固有对称性和周期性,改善DFT的运算效率knNWknNW的对称性:
7、nkNknNWW*)(knNW的周期性:)()(kNnNkNnNknNWWW1)()(22kjkNNjkNNeeW因为:1, 1 , 0Nk1)()(22njNnNjNnNeeW1, 1 , 0Nn由此可得出:nkNknNNkNnNWWW)()()(1sincos)(222/jeWNNjNNkNNkNWW)(2例子 例:1454)54(494WWWW1898178258WWWW利用以上特性,得到改进DFT直接算法的方法.(1) 合并法:步骤1分解成虚实部 合并DFT运算中的有些项 对虚实部而言 所以带入DFT中:)(*)(NnkNknNWWknNnNkNWWReRe)(knNnNkNWWImI
8、m)(1) 合并法:步骤2代入DFT中1010Re)(ImIm)(ReIm)(ImRe)(Re)(NnnkNnkNNnnkNnkNWnxWnxjWnxWnxkX展开:1010Im)Re(Im)(Re)()(NnnkNnkNNnnkNWjWnxjnxWnxkX(1) 合并法:步骤3合并有些项nkNnNkNnkNWnNxnxWnNxWnxRe)(Re)(ReRe)(ReRe)(Re)(nkNnNkNnkNWnNxnxWnNxWnxIm)(Im)(ImIm)(ImIm)(Im)(knNnNkNWWReRe)(knNnNkNWWImIm)(根据:有:(1) 合并法:步骤4结论 由此找出其它各项的类似归
9、并方法:乘法次数可以减少一半。例:1545) 15(515Re)4(Re) 1 (ReRe)4(Re) 1 (Re) 15 (ReRe) 1 (ReWxxWxxWxWx2、将长序列DFT利用对称性和周期性分解为短序列DFT-思路 因为DFT的运算量与的运算量与N2成正比的成正比的 如果一个大点数N的DFT能分解为若干小点数DFT的组合,则显然可以达到减少运算工作量的效果。2、将长序列DFT利用对称性和周期性分解为短序列DFT-方法22)()()(NNNkXkXkX把N点数据分成二半:其运算量为:2)2(N2)2(N2N再分二半:44)()(NNkXkX44)()(NNkXkX+=22N2)4(
10、N2)4(N2)4(N2)4(N+=24N这样一直分下去,剩下两点的变换两点的变换。2、将长序列DFT利用对称性和周期性分解为短序列DFT-结论 快速付里时变换(FFT)就是在此特性基础上发展起来的,并产生了多种FFT算法,其基本上可分成两大类: 按抽取方法分: 时间抽取法(DIT);频率抽取法(DIF) 按“基数”分:基-2FFT算法;基-4FFT算法;混合基FFT算法;分裂基FFT算法 其它方法:线性调频Z变换(CZT法)第三节基-2按时间抽取的FFT算法Decimation-in-Time(DIT)(Coolkey-Tukey)一、算法原理 设输入序列长度为N=2M(M为正整数,将该序列
11、按时间顺序的奇偶分解为越来越短的子序列,称为基2按时间抽取的FFT算法。也称为Coolkey-Tukey算法。 其中基数2-N=2M,M为整数.若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到 N=2M例子 设一序列设一序列x(n)的长度为的长度为L=9,应加零补长为应加零补长为 N=24=16 应补应补7个零值。个零值。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 nx(n)二、算法步骤1.分组,变量置换分组,变量置换DFT变换:10)()(NnknNWnxkX1,0Nk先将x(n)按n的奇偶分为两 组,作变量置换:当n=偶数时,令n=2r;当n=
12、奇数时,令n=2r+1;得到:x(2r)=x1(r); x(2r+1)=x2(r);r=0N/2-1; 则可得其DFT为两部分:前半部分前半部分:后半部分后半部分:)(2)( 1)(kXWkXkXkN12/, 0Nk)(2)( 1)2/(kXWkXNkXkN2.代入DFT中)( 2)( 1) 12 ()2 ()()rxDFTrxDFTrxDFTrxDFTnxDFTkX(生成两个子序列x(0),x(2)x(2r)偶数点x(1),x(3)x(2r+1)奇数点12/, 0Nr代入DFT变换式:2/2/2222212/012/02)12(12/012/02)( )(2)( 1) 12()2()NNjN
13、jNkNrkNNrNrrkNkrNNrNrrkNWeeWWWrxWrxWrxWrxkX(3.求出子序列的DFT上式得:12/012/02/2/2212/012/02/2/11212/12/0212/02/1) 12()()()2()()(12/1 , 0)()()()()NrNrrkNrkNNrNrrkNrkNkNkNrkNNrNrrkNWrxWrxkXWrxWrxkXNkkXWkXWWrxWrxkX其中:(12/, 0Nk4.结论1 一个N点的DFT被分解为两个N/2点DFT。X1(k),X2(k)这两个N/2点的DFT按照:12/1 , 0)()()21NkDFTNkXWkXkXkN中的前
14、半部分点又合成( 再应用W系数的周期性,求出用X1(k),X2(k)表达的后半部的X(k+N/2)的值。5.求出后半部的表示式12/012/022/2)2/(2/2212/012/012/1)2/(2/11)2/(2/2/)()()()2()()()()2(NrNrrkNkNrNNrNrrkNkNrNNkrNrkNkXWrxWrxkNXkXWrxWrxkNXWW看出:后半部的k值所对应的X1(k),X2(k)则完全重复了前半部分的k值所对应的X1(k),X2(k)的值。)()()(212/)2/kXWkXkXWWWWkNkNkNNNkNN后半部分:又(6.结论2频域中的N个点频率成分为:)()
15、()2/()()()(2121kXWkXNkXkXWkXkXkNkN后半部分:前半部分:结论:只要求出(0N/2-1)区间内的各个整数k值所对应的X1(k),X2(k)值,即可以求出(0N-1)整个区间内全部X(k)值,这就是FFT能大量节省计算的关键。7.结论3由于N=2M,因此N/2仍为偶数,可以依照上面方法进一步把每个N/2点子序列,再按输入n的奇偶分解为两个N/4点的子序列,按这种方法不断划分下去,直到最后剩下的是2点DFT,两点DFT实际上只是加减运算加减运算。) 1 ()0() 1 () 1 ()0()0(2,)()(10 xxXxxXNWnxkXNnknN时三、蝶形结即蝶式计算结
16、构也即为蝶式信号流图上面频域频域中前/后半部分表示式可以用蝶形信号流图表示。X1(k)X2(k)kNW)()(21kXWkXkN)()(21kXWkXkN作图要素:作图要素:(1)左边两路为输入左边两路为输入(2)右边两路为输出右边两路为输出(3)中间以一个小圆表示加、中间以一个小圆表示加、减运算(右上路为相加输减运算(右上路为相加输出、右下路为相减输出出、右下路为相减输出)(4)如果在某一支路上信号需要进行如果在某一支路上信号需要进行相乘运算,则在该支路上标以箭头,相乘运算,则在该支路上标以箭头,将相乘的系数标在箭头旁。将相乘的系数标在箭头旁。(5)当支路上没有箭头及系当支路上没有箭头及系数
17、时,则该支路的传输比数时,则该支路的传输比为为1。例子:求 N=23=8点FFT变换 (1)先按)先按N=8-N/2=4,做做4点的点的DFT:)()() 2/()()()(2121kXWkXNkXkXWkXkXkNkN12/, 0Nk先将N=8DFT分解成2个4点DFT:可知:时域上:x(0),x(2),x(4),x(6)为偶子序列 x(1),x(3),x(5),x(7)为奇子序列 频域上:X(0)X(3),由X(k)给出 X(4)X(7),由X(k+N/2)给出(a)比较N=8点直接DFT与分解2个4点DFT的FFT运算量N=8点的直接直接DFT的计算量为:N2次(64次)复数相乘,N(N
18、-1)次(8(8-1)=56次)复数相加.共计120次。(b)求 一个蝶形结需要的运算量要运算一个蝶形结,需要一次乘法 , 两次加法。)(2kXWkN)()() 2/()()()(2121kXWkXNkXkXWkXkXkNkN(c)分解为两个N/2=4点的DFT的运算量分解2个N/2点(4点)的DFT:) 12()2()rxDFTrxDFTkX(偶数其复数相乘为复数相加为奇数其复数相乘为复数相加为22)(N)(122NN22)(N)(122NN次。共计为次,(次,复数相加为复数相乘为5624) 123222NNN(d)用2个4点来求N=8点的FFT所需的运算量再将N/2点(4点)合成N点(8点
19、)DFT时,需要进行N/2个蝶形运算)()() 2/()()()(2121kXWkXNkXkXWkXkXkNkN12/, 0Nk还需N/2次(4次)乘法 及 次(8次)加法运算。22N)(2kXWkN计算量。分解就可以节省约一半次。看出仅做一次共计为次复数加法次复数乘法)共需求点所以68,322) 12(,36221(22)(8222NNNNNNNNNkXFFT(e)将N=8点分解成2个4点的DFT的信号流图 4点DFTx(0)x(2)x(4)x(6)4点DFTx(1)x(3)x(5)x(7)08W18W28W38WX(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)X1(0)X1
20、(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)偶数序列奇数序列3821282118210821) 3 () 3 (3) 2() 2(2) 1 () 1 (1) 0() 0(0WXXXWXXXWXXXWXXX)()()()(如:X(4)X(7)同学们自已写x1(r)x2(r)(2)N/2(4点)-N/4(2点)FFT(a)先将先将4点分解成点分解成2点的点的DFT: 因为4点DFT还是比较麻烦,所以再继续分解。 若将N/2(4点)子序列按奇/偶分解成两个N/4点(2点)子序列。即对将x1(r)和x2(r)分解成奇、偶两个N/4点(2点)点的子序列。奇序列、偶序列、) 6()
21、2() 4() 0(: )(1xxxxrx奇序列、偶序列、同理:)7() 3 () 5 () 1 (: )(2xxxxrx1014012()()2(4131,),在此()奇序列()偶序列若设:LNLLXLxLxLx1014012()()2(5252,),在此()奇序列()偶序列同理:LNLLXLxLxLx(b)求2点的DFT)()4/()()()()()()()4/10)()() 12()2()()(62/5262/52242/3142/314/0) 12(2/114/022/1111LXWLXNkxLXWLXkxrxLXWLXNkXLLXWLXWLXWLXkXkXrxkNkNkNkNNLkL
22、NNLLkNDFT)也可分解为:同样,(同理:,其中(可分解为:(c)一个2点的DFT蝶形流图2点DFT2点DFTx(0)x(4)x(2)x(6)X3(0)X3(1)X4(0)X4(1)X1(0)X1(1)X1(2)X1(3)04W14W) 1 () 1 () 1 () 0() 0() 2() 1 () 1 () 1 () 0() 0() 0(41431404314143140431XWXXXWXXXWXXXWXX其中(d)另一个2点的DFT蝶形流图2点DFT2点DFTx(1)x(5)x(3)x(7)X5(0)X5(1)X6(0)X6(1)X2(0)X2(1)X2(2)X2(3)04W14W)
23、 1 () 1 () 1 () 0() 0() 2() 1 () 1 () 1 () 0() 0() 0(61452604526145260452XWXXXWXXXWXXXWXX其中同理:(3)将N/4(2点)DFT再分解成2个1点的DFT(a)求2个一点的DFT021022120202120230202020231021 , 0; 1 , 0)4()0()4()0() 1 ()4()0()4()0()0()()(2WWknWWWWWxWxWxWxXWxWxWxWxXWnxkXnknknkNnkNnnkN,其中,则这里用到对称性这是一蝶形结代入上面流图可知: 最后剩下两点DFT,它可分解成两个
24、一点DFT,但一点DFT就等于输入信号本身,所以两点DFT可用一个蝶形结表示。取x(0)、x(4)为例。(b)2个1点的DFT蝶形流图 1点DFTx(0)1点DFTx(4)X3(0)X3(1)02W进一步简化为蝶形流图:02WX3(0)X3(1)x(0)x(4)4()0()4()0() 1 ()4()0()4()0()0(023023xxxWxXxxxWxX其中:(4)一个完整N=8的按时间抽取FFT的运算流图 x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)38W28W18W08W08W08W08W08W08W08W28W28WX(0)X(1)X(2)X(3)X(4)X(5)
25、X(6)X(7)12/0NNNWW其中旋转因子,共有m=0m=1m=2四、FFT算法中一些概念 (1)“级级”概念概念 将N 点DFT先分成两个N/2点DFT,再是四个N/4点DFT直至N/2个两点DFT.每分一次称为“一”级运算。 因为N=2M所以N点DFT可分成M级 如上图所示依次m=0,m=1.M-1共M级(2)“组组”概念概念 每一级都有N/2个蝶形单元,例如:N=8,则每级都有4个蝶形单元。每一级的N/2个蝶形单元可以分成若干组,每一组具有相同的结构,相同的 因子分布,第m级的组数为:rNW12mN例:N=8=23,分3级。m=0级,分成四组,每组系数为m=1级,分成二组,每组系数为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP FFT 深入浅出 详细 讲解 快速 傅里叶变换
限制150内