《数字信号处理第4章快速傅里叶变换FF.ppt》由会员分享,可在线阅读,更多相关《数字信号处理第4章快速傅里叶变换FF.ppt(72页珍藏版)》请在三一办公上搜索。
1、课件,1,第4章 快速傅里叶变换(FFT),4.1 引言4.2 基2FFT算法4.3 进一步减少运算量的措施4.4 分裂基FFT算法4.5 离散哈特莱变换(DHT),课件,2,4.1 引言,DFT是信号分析与处理中的一种重要变换。因直接计算DFT的计算量与变换区间长度N的平方成正比,当N较大时,计算量太大,所以在快速傅里叶变换(简称FFT)出现以前,直接用DFT算法进行谱分析和信号的实时处理是不切实际的。直到1965年发现了DFT的一种快速算法以后,情况才发生了根本的变化。,课件,3,4.2 基2FFT算法,4.2.1 直接计算DFT的特点及减少运算量的基本途径 长度为N的有限长序列x(n)的
2、DFT为 考虑x(n)为复数序列的一般情况,对某一个k值,直接按(4.2.1)式计算X(k)值需要N次复数乘法、(N-1)次复数加法。,(4.2.1),课件,4,如前所述,N点DFT的复乘次数等于N2。显然,把N点DFT分解为几个较短的DFT,可使乘法次数大大减少。另外,旋转因子WmN具有明显的周期性和对称性。其周期性表现为,(4.2.2),其对称性表现为,或者,课件,5,4.2.2 时域抽取法基2FFT基本原理 FFT算法基本上分为两大类:时域抽取法FFT(Decimation In Time FFT,简称DIT-FFT)和频域抽取法FFT(Decimation In Frequency F
3、FT,简称DIFFFT)。下面先介绍DIFFFT算法。设序列x(n)的长度为N,且满足,为自然数,按n的奇偶把x(n)分解为两个N/2点的子序列,课件,6,则x(n)的DFT为,由于,所以,课件,7,其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT,即,(4.2.5),(4.2.6),由于X1(k)和X2(k)均以N/2为周期,且所以X(k)又可表示为前后对半分开两部分,(4.2.7),(4.2.8),课件,8,图4.2.1 蝶形运算符号,课件,9,图4.2.2 N点DFT的一次时域抽取分解图(N=8),课件,10,二次分解:与第一次分解相同,将x1(r)按奇偶分解成两个
4、N/4长的子序列x3(l)和x4(l),即,那么,X1(k)又可表示为,(4.2.9),课件,11,式中,同理,由X3(k)和X4(k)的周期性和Wm N/2的对称性 Wk+N/4 N/2=-Wk N/2 最后得到:,(4.2.10),课件,12,用同样的方法可计算出,(4.2.11),其中,课件,13,图4.2.3 N点DFT的第二次时域抽取分解图(N=8),课件,14,图4.2.4 N点DITFFT运算流图(N=8),课件,15,4.2.3 DITFFT算法与直接计算DFT运算量的比较 每一级运算都需要N/2次复数乘和N次复数加(每个蝶形需要两次复数加法)。所以,M级运算总共需要的复数乘次
5、数为,复数加次数为,例如,N=210=1024时,课件,16,图4.2.5 FFT算法与直接计算DFT所需乘法次数的比较曲线,课件,17,4.2.5 频域抽取法FFT(DIFFFT)在基2快速算法中,频域抽取法FFT也是一种常用的快速算法,简称DIFFFT。设序列x(n)长度为N=2M,首先将x(n)前后对半分开,得到两个子序列,其DFT可表示为如下形式:,课件,18,偶数,奇数,X(k)分解成偶数组与奇数组,当k取偶数k=2r,r=0,1,N/2-1时,(4.2.14),课件,19,当k取奇数(k=2r+1,r=0,1,N/2-1)时,(4.2.15),将x1(n)和x2(n)分别代入(4.
6、2.14)和(4.2.15)式,可得,(4.2.16),课件,20,图4.2.10 DIFFFT蝶形运算流图符号,课件,21,图4.2.11 DIFFFT一次分解运算流图(N=8),课件,22,图4.2.12 DIFFFT二次分解运算流图(N=8),课件,23,图4.2.13 DIFFFT运算流图(N=8),课件,24,图4.2.14 DITFFT的一种变形运算流图,课件,25,图4.2.15 DITFFT的一种变形运算流图,课件,26,4.2.6 IDFT的高效算法 上述FFT算法流图也可以用于离散傅里叶逆变换(Inverse Discrete Fourier Transform,简称IDF
7、T)。比较DFT和IDFT的运算公式:,课件,27,如果希望直接调用FFT子程序计算IFFT,则可用下面的方法:由于,对上式两边同时取共轭,得,课件,28,4.3 进一步减少运算量的措施,4.3.1 多类蝶形单元运算 由DITFFT运算流图已得出结论,N=2M点FFT共需要MN/2次复数乘法。由(4.2.12)式,当L=1时,只有一种旋转因子W0N=1,所以,第一级不需要乘法运算。,课件,29,综上所述,先除去第一、二两级后,所需复数乘法次数应是 从L=3至L=M共减少复数乘法次数为,(4.3.1),(4.3.2),因此,DITFFT的复乘次数降至,(4.3.3),课件,30,课件,31,从实
8、数运算考虑,计算N=2M点DITFFT所需实数乘法次数为,(4.3.4),课件,32,4.3.2 旋转因子的生成 在FFT运算中,旋转因子WmN=cos(2m/N)-jsin(2m/N),求正弦和余弦函数值的计算量是很大的。,课件,33,4.3.3 实序列的FFT算法 设x(n)为N点实序列,取x(n)的偶数点和奇数点分别作为新构造序列y(n)的实部和虚部,即,对y(n)进行N/2点FFT,输出Y(k),则,根据DITFFT的思想及式(4.2.7)和(4.2.8),可得到,课件,34,由于x(n)为实序列,所以X(k)具有共轭对称性,X(k)的另外N/2点的值为,课件,35,4.4 分裂基FF
9、T算法,4.4.1 分裂基FFT算法原理 当n=pq,且p=N/4,q=4时,n可表示为,并有,课件,36,再将上式中的k表示为,课件,37,可得,对k0=0,1,2,3,并用k表示k1,用n表示n0,可以写出,课件,38,(4.4.1),课件,39,(4.4.2),课件,40,(4.4.3),令,课件,41,则(4.4.2)式可写成如下更简明的形式:,(4.4.4),课件,42,图4.4.1 分裂基第一次分解L形流图,课件,43,例如,N=16,第一次抽选分解时,由式(4.4.3)得x2(n)=x(n)+x(n+8),0n7x14(n)=x(n)-x(n+8)-jx(n+4)-x(n+12)
10、Wn16,0n3x24(n)=x(n)-x(n+8)+jx(n+4)-x(n+12)W3n16,0n3把上式代入式(4.4.4),可得 X(2k)=DFTx2(n),0k7 X(4k+1)=DFTx14(n),0k3 X(4k+3)=DFTx24(n),0k3,课件,44,图4.4.2 分裂基FFT算法L形排列示意图与结构示意图(a)分裂基FFT算法L形排列示意图;(b)分裂基FFT算法运算流图结构示意图,课件,45,图4.4.3 16点分裂基第一次分解L形流图(图中省去箭头),课件,46,第二次分解:先对图中N/2点DFT进行分解。令X1(l)=X(2l),则有 X1(2l)=DFTy2(n
11、),0l3 X1(4l+1)=DFTy14(n),0l1 X1(4l+3)=DFTy24(n),0l1,课件,47,其中y2(n)=x2(n)+x2(n+4),0n3y14(n)=x2(n)-x2(n+4)-x2(n+2)x(n+6)Wn8,n=0,1y24(n)=x2(n)-x2(n+4)+jx2(n+2)x2(n+6)W3n8,n=0,1,课件,48,图4.4.4 图中N/2点DFT的分解L形流图,课件,49,图4.4.5 4点分裂基L形运算流图,课件,50,图4.4.6 16点分裂基FFT运算流图,课件,51,4.4.2 分裂基FFT算法的运算量 设第j级有lj个L形,j=1,2,M-1
12、,M=log2N,则有l1=N/4。由图4.4.2(b)可见,第j-1列中的L形包含了第j列中的一部分结点的计算,即空白部分,所占结点数刚好等于第j-1列中所有L形对应结点的一半,所以第j列L形个数就减少l j-1/2个,即,课件,52,课件,53,由于每个L形有两次复(数)乘运算,所以全部复乘次数为,(4.4.5),课件,54,4.5 离散哈特莱变换(DHT),4.5.1 离散哈特莱变换定义 设x(n),n=0,1,N-1,为一实序列,其DHT定义为,式中,cas()=cos+sin。其逆变换(IDHT)为,(4.5.3),课件,55,4.5.2 DHT与DFT之间的关系 为了便于比较,重写
13、DFT如下:,(4.5.5),(4.5.6),容易看出,DHT的核函数 DFT的核函数 的实部与虚部之和。,课件,56,将XH(k)分解为奇对称分量XHo(k)与偶对称分量XHe(k)之和,(4.5.7),(4.5.8),(4.5.9),由DHT定义有,(4.5.10a),(4.5.10b),课件,57,所以,x(n)的DFT可表示为同理,x(n)的DHT可表示为因此,已知x(n)的DHT,则DFT可用下式求得:,(4.5.11),(4.5.12),(4.5.13),课件,58,4.5.3 DHT的主要优点(1)DHT是实值变换,在对实信号或实数据进行谱分析时避免了复数运算,从而提高了运算效率
14、,相应的硬件也更简单、更经济;(2)DHT的正、反变换(除因子1/N外)具有相同的形式,因而,实现DHT的硬件或软件既能进行DHT,也能进行IDHT;(3)DHT与DFT间的关系简单,容易实现两种谱之间的相互转换。,课件,59,4.5.4 DHT的性质 1.线性性质,(4.5.14),2.x(N-n)的DHT,(4.5.15),其中,当k=0时,XH(N-k)=XH(N)=XH(0)。,课件,60,3.循环移位性质,(4.5.16),(4.5.17),课件,61,4.奇偶性 奇对称序列和偶对称序列的DHT仍然是奇对称序列或偶对称序列,即DHT不改变序列的奇偶性。5.循环卷积定理,(4.5.18
15、),(4.5.19),课件,62,。当x1(n)或x2(n)是偶对称序列时,则由DHT的奇偶性有,(4.5.21),课件,63,4.5.5 DHT的快速算法(FHT)1.基2DITFHT算法及运算流图 仿照快速DFT的分解方法,可通过时域抽取或频域抽取的方式实现快速DHT。x(n)的N=2M点DHT如下式:,对x(n)进行奇偶抽取,(4.5.22),(4.5.23),课件,64,与DFT的时域抽取分解比较,不是 一个指数函数,所以处理要比W(2r+1)kN麻烦一些。根据三角公式有,(4.5.24),(4.5.25),课件,65,令X0H(k)=DHTx0(n),X1H(k)=DHTx1(n),
16、并考虑DHT的周期性,(4.5.25)式可写成,为了使以下推导中公式简明,记 C(k)=cos(2/N)k,S(k)=sin(2/N)/k。将式(4.5.26)中的k分别取k,N/2+k,N/2-k和N-k四个值,并考虑X0H(k)和X1H(k)以N/2为周期,得到,课件,66,(4.5.27),课件,67,当k=0时,式(4.5.27)中有重复,可单独写成,(4.5.28),同理,在k=N/4时有,(4.5.29),课件,68,图4.5.1 基2DIT-FHT原理和哈特莱碟形,课件,69,图4.5.2 4点DFHT蝶形图,课件,70,图4.5.3 16点基2DITFHT流图,课件,71,2.基2DITFHT的运算量 观察图可知,运算流图中都是实数运算。N=2M点FHT流图共分为M级。用L表示流图自右向左的蝶形级数。第L级乘法次数为2L(N/2L-2),但最后二级无乘法运算,所以,总的乘法次数MH为,(4.5.30),(4.5.31),同理可求得总的加法次数AH为,课件,72,4.5.6 实信号的快速循环卷积 用DITFFT计算两个实信号x1(n)和x2(n)的循环卷积时,最直接的方法是将信号的虚部都置为零,再按复序列用FFT计算。显然这样做是很浪费的。现在我们可用基2DITFHT直接进行实正交变换来处理实信号的循环卷积问题。,计算式(4.5.18),