快速傅里叶变换FFT.ppt

上传人:tian****1990 文档编号:3405556 上传时间:2019-12-13 格式:PPT 页数:37 大小:665KB
返回 下载 相关 举报
快速傅里叶变换FFT.ppt_第1页
第1页 / 共37页
快速傅里叶变换FFT.ppt_第2页
第2页 / 共37页
快速傅里叶变换FFT.ppt_第3页
第3页 / 共37页
点击查看更多>>
资源描述
本章主要内容引言基2FFT算法进一步减少运算量的措施,第4章快速傅里叶变换(FFT),DFT是信号分析与处理中的一种重要变换。但直接计算DFT的计算量与变换区间长度N的平方成正比,当N较大时,计算量太大,直接用DFT算法进行谱分析和信号的实时处理是不切实际的。1965年发现了DFT的一种快速算法,使DFT的运算效率提高12个数量级,为数字信号处理技术应用于各种信号的实时处理创造了条件,推动了数字处理技术的发展。1984年,提出了分裂基快速算法,使运算效率进一步提高;,4.1引言,4.2.1直接计算DFT的特点及减少运算量的基本途径直接计算DFT长度为N的有限长序列x(n)的DFT为:2、减少运算量的思路和方法思路:N点DFT的复乘次数等于N2。把N点DFT分解为几个较短的DFT,可使乘法次数大大减少。另外,旋转因子WmN具有周期性和对称性。,4.2基2FFT算法,考虑x(n)为复数序列的一般情况,对某一个k值,直接按上式计算X(k)值需要N次复数乘法、(N-1)次复数加法。,方法:分解N为较小值:把序列分解为几个较短的序列,分别计算其DFT值,可使乘法次数大大减少;利用旋转因子WNk的周期性、对称性进行合并、归类处理,以减少DFT的运算次数。周期性:对称性:3、FFT算法思想不断地把长序列的DFT分解成几个短序列的DFT,并利用旋转因子的周期性和对称性来减少DFT的运算次数。,4.2基2FFT算法,4.2.2时域抽取法基2FFT基本原理FFT算法基本上分为两大类:时域抽取法FFT(简称DIT-FFT)和频域抽取法FFT(简称DIFFFT)。1、时域抽取法FFT的算法思想:将序列x(n)按n为奇、偶数分为x1(n)、x2(n)两组序列;用2个N/2点DFT来完成一个N点DFT的计算。设序列x(n)的长度为N,且满足:(1)按n的奇偶把x(n)分解为两个N/2点的子序列,4.2基2FFT算法,为自然数,(2)用N/2点X1(k)和X2(k)表示序列x(n)的N点DFTX(k),4.2基2FFT算法,注意:这里的k的取值范围为0,1,N-1,由于X1(k)和X2(k)均以N/2为周期,且,X(k)又可表示为:对上式的运算用下图所示的流图符号来表示,4.2基2FFT算法,这样将N点DFT分解为两个N/2点的DFT,完成一个蝶形运算需要一次复数乘和两次复数加法运算,经过一次分解后,共需要复数乘和复数加的次数为2(N/2)2+N/2和N2/2,4.2基2FFT算法,N=8点的DIT-2FFT(时域抽取图)一次分解图,(3)第二次分解:将x1(r)按r取奇、偶可分解成2个长度为N/4的子序列x3(l)=x1(2l)、x4(l)=x1(2l+1),根据上面推导可得:X1(k)=X3(k)+WN/2kX4(k),k=0,1,N/2-1将x2(r)按r取奇、偶可分解成2个长N/4的子序列x5(l)=x2(2l),l=0,1,,N/4x6(l)=x2(2l+1);同理得,4.2基2FFT算法,l=0,1,,N/4-1;,4.2基2FFT算法,N=8点DFT的二次时域抽取分解图,k=0,1,N/4-1;,再次分解,对N=8点,可分解三次。,4.2基2FFT算法,4.2基2FFT算法,4.2.3DITFFT算法与直接计算DFT运算量的比较1、直接DFT运算N点运算:复数乘次数:NN复数加次数:N(N-1)2、用DIT-FFT作N点运算:复数乘次数:MN/2=N/2log2N;复加次数:2N/2M=Nlog2N。可见FFT大大减少了运算次数,提高了运算速度。,4.2基2FFT算法,整个运算流图中有M级蝶形,每一级运算流图中有N/2个蝶形,每个蝶形需一次复乘和两次复数加运算。,4.2.4DITFFT的运算规律及编程思想1.原位计算序列长为N=2M点的FFT,有M级蝶形,每级有N/2个蝶形运算。同一级中,每个蝶形的两个输入数据只对本蝶形有用,每个蝶形的输入、输出数据节点在用一条水平线上。这样,当计算完一个蝶形后,所得的输出数据可立即存入原输入数据所占用的存储单元。经过M级运算后,原来存放输入序列数据的N个存储单元中可依次存放X(k)的N个值。原位计算:利用同一存储单元存储蝶形计算输入、输出数据的方法。优点:节约存储空间、降低设备成本。,4.2基2FFT算法,2.旋转因子的变化规律N点DITFFT运算流图中,每个蝶形都要乘以旋转因子WpN,p称为旋转因子的指数。N823时各级的旋转因子第一级:L=1,有1个旋转因子:WNp=WN/4J=W2LJJ=0第二级:L=2,有2个旋转因子:WNp=WN/2J=W2LJJ=0,1第三级:L=3,有4个旋转因子:WNp=WNJ=W2LJJ=0,1,2,3对于N2M的一般情况,第L级共有2L-1个不同的旋转因子:WNp=W2LJJ=0,1,2,2L-112L=2LM2M=N2LM故:按照上面两式可以确定第L级运算的旋转因子。,4.2基2FFT算法,p=J2M-L,J=0,1,2,2L-11,3、同一级中,同一旋转因子对应蝶形数目第L级FFT运算中,同一旋转因子用在2M-L个蝶形中;4、同一级中,蝶形运算使用相同旋转因子之间相隔的“距离”第L级中,蝶距:D=2L。5、同一蝶形运算两输入数据的距离在输入倒序,输出原序的FFT变换中,第L级的每一个蝶形的2个输入数据相距:B=2L-1。6、码位颠倒输入序列x(n)经过M级时域奇、偶抽选后,输出序列X(k)的顺序和输入序列的顺序关系为倒位关系。,4.2基2FFT算法,7、蝶形运算的规律序列经过时域抽选后,存入数组中,如果蝶形运算的两个输入数据相距B个点,应用原位计算,蝶形运算可表示成如下形式:,4.2基2FFT算法,8、DIT-FFT程序框图根据DIT-FFT原理和过程,DIT-FFT的完整程序框图包括以下几部分:(1)倒序:输入自然顺序序列x(n),根据倒序规律,进行倒序处理;(2)循环层1:确定运算的级数,L=1M(N=2M);确定一蝶形两输入数据距离B=2L-1(3)循环层2:确定L级的(B=)2L-1个旋转因子;旋转因子指数p=2M-LJ,J=0B-1;(4)循环层3:对于同一旋转因子,用于同一级2M-L个蝶形运算中:k的取值从J到N-1,步长为2L(使用同一旋转因子的蝶形相距的距离)(5)完成一个蝶形运算。,4.2基2FFT算法,9.序列的倒序N=2M,用M位二进制数(nM-1nM-2n1n0)2表示序列的序号n.M次偶奇时域抽选过程为:对最低位按0、1分为偶、奇两组,次低位也按0、1分组,依此类推,M次分解后形成倒序图为:,4.2基2FFT算法,二进制数(N=8)分解倒序图,可见,只要将顺序数的二进制位倒置可得到对应的二进制倒序值。,(n2n1n0)2,思考题:已知N=16点,在DIT-FFT运算中,序数为2的二进制经数倒序后为多少?,4.2基2FFT算法,顺序数增加1,是在顺序数的二进制数的最低位加1,向左进位,到序数是在M位二进制数的最高位加1,向右进位,(0010-0100),顺序和倒序二进制数对照表,N=2M,用M位二进制数表示,则从左至右的十进制权值为:N/2、N/4、N/8,、2,1对倒序数J,其下一个序数是在该序数J的二进制首位码加1,相当于十进制运算J+N/2。计算机上倒序数的实现过程为:,4.2基2FFT算法,倒序数的十进制运算规律,倒序程序框图为了实现原位运算,以节约存贮空间,提高运算速率。在倒序数J形成后,需将原存储器中存放的输入序列重新排列。下面先分析N=8点的倒序规律。,4.2基2FFT算法,输入序列,数组,分析上图N=8点倒序规律,顺序数I与倒序数J存在关系:I=J时,不交换;IJ时,不交换,直接更新序数值;,I,J,x(0),x(2),x(5),x(7),计算倒序值,交换数组中的数据,不交换数据,避免再次调换前面调换过的一对数据,计算下一个倒数值。,4.2.5频域抽取法FFT(DIFFFT)在基2快速算法中,频域抽取法FFT也是一种常用的快速算法。1、算法思想和运算过程设序列x(n)长度为N=2M,将序列x(n)前后对半分为x1(n)、x2(n)两组序列,用2个N/2点DFT来完成一个N点DFT的计算。,4.2基2FFT算法,n,4.2基2FFT算法,将X(k)分解成偶数组与奇数组,当k取偶数(k=2r,r=0,1,N/2-1)时当k取奇数(k=2r+1,r=0,1,N/2-1)时:将x1(n)和x2(n)分别代入上式,可得,x2(n),表明:X(k)按奇偶k值分为两组:偶数组是x1(n)的N/2点DFT奇数组是x2(n)的N/2点DFT,n=0,1,N/2-1,那么对序列x1(n)、x2(n)和x(n)可用蝶形运算符号表示,4.2基2FFT算法,N=8时第1次分解的运算流图,N=2M,N/2仍是偶数,继续将N/2点进行分解。将输入序列x1(n)、x2(n)分别按前、后对半分解成4个长N/4的子序列,其n=0,1,,N/4-1,4.2基2FFT算法,经过三次分解后,DIFFFT运算流图(N=8)为:,4.2基2FFT算法,2、DIF-FFT运算规律DIF-FFT算法也可采用原位计算;N=2M时,共有M级运算,每级共有N/2个蝶形,DIT与DIF算法的运算次数相同。DIT与DIF不同的是:DIF-FFT算法输入序列为自然序列,输出为倒序序列。因此,在M级运算完成后,需对输出数据进行倒序才能得到自然顺序的X(k)。蝶形运算符号不同:DIT-FFT蝶形是先相乘,后加/减;而DIF-FFT蝶形是先加/减,后相乘。,4.2基2FFT算法,3、其它形式的DIT-FFT运算流图通过改变输入/输出节点,中间节点的排列顺序,可以得到不同变形的FFT运算流图。因此,前面介绍的DIT-FFT和DIF-FFT运算流图都不是唯一的。,4.2基2FFT算法,用同样的方法可得DIT-FFT的另外一种变形运算流图,输入和输出均为顺序排列,但不能采用原位计算。,4.2基2FFT算法,DITFFT的一种变形运算流图,4.2.6IDFT的高效算法1DFT和IDFT的公式比较上述FFT算法流图也可以用于离散傅里叶逆变换IDFT根据运算公式可以看出,只需将DFT的系数WNkn变为WN-kn,最后结果乘以1/N,就是IDFT的运算公式。,第4章快速傅里叶变换(FFT),X(k),n,2用FFT流图实现IDFT快速算法将DIT-FFT或DIF-FFT蝶形运算流图中旋转因子WNp改为WN-p在IDFT快速算法的最后结果输出前,乘以1/N常数;如要防止溢出,可在每一级运算中,输出支路分别乘以1/2,实现系数分级分担。在IDFT快速算法中,输入序列为X(k),而输出序列为x(n)。节点对应关系:DIT-FFT对应DIF-IFFTDIF-FFT对应DIT-IFFT,第4章快速傅里叶变换(FFT),第4章快速傅里叶变换(FFT),DITIFFT运算流图,第4章快速傅里叶变换(FFT),DITIFFT运算流图(防止溢出),3、直接调用FFT程序实现IFFT的计算对FFT流程作一些修改后,调用FFT程序实现IFFT的快速计算。具体实现方法:先将X(k)取共轭,得到X*(k);直接调用FFT子程序计算出DFTX*(k)的值;对输出序列取共轭,并乘以1/N常数。虽然2次用了取共轭运算,但可以和FFT共用一个子程序,实现方便。,第4章快速傅里叶变换(FFT),本章作业本章第一次作业习题1习题2本章第二次作业习题3习题4,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!