数字信号处理(八)—-FFT应用综述 引言:在之前的文章中,我们已经知道了如何用DFT对信号进行谱分析,以及如何用DFT实现快速的线性卷积等应用。接下来我们将更进一步接近实际,介绍DFT的快速算法!通过本文你将知道,对于离散时间信号快速得到其DFT的各种方法以及实际情况中的延伸应用,核心目的为减少计算机运算时间,提高运算效率! 首先,我们可以想象,为什么对一个序列直接进行DFT的计算量是巨大的,从定义来看,算一个值对应的DFT就要经历很多次乘法和加法,而且这里的乘法还是复数之间的,也就是说实部虚部的分开将带来更多次计算!因此根源在于序列太长了!因此实现快速运算的核心在于,将序列分开变短,减少累加以及乘法次数,从而减少运算次数!总体上来说,主要分为:时间抽选和频率抽选!(本文最后将告诉你,为什么要有两种方式分选。) 一.时间抽选的基2FFT(DIT) 时间抽选,顾名思义就是从时域上将信号分开,分开的依据是从定义上来看的,根本在于DFT定义式中的旋转因此具有周期性和对称性。
你可以看到,这个例子为时间抽选的4点FFT,实际化简到最后,计算的次数大大降低 对于一个序列长度为2的次数的序列,首先将序列排开后奇数项和偶数项分开为两个新的短序列,然后每个短序列按照相同方式再次分解,直到最后一级只剩下两点的DFT,下面给出一个例子为8点FFT,用蝶形的方式表示:
8点长FFT蝶形图 下面对于直接进行DFT以及用FFT算法进行DFT的运算次数进行对比:
可见,FFT计算速度应提高一倍 二.频率抽选基2FFT(DIF) 频率抽选,顾名思义就是将得到的DFT分开,而输入的序列是顺序的,这一点上,它输入输出的编号是和时间抽选相反的!
下面同样用一个8点长的序列FFT蝶形图来表示频率抽选的计算过程
可见,输入是顺序0-7,输出为奇偶分解结果 可见,时间抽选和频率抽选知识对信号分开的方式不同,他们的计算量应该是一样的!对于运算速度的提升也是一样的! 三.DIT与DIF的关系 可以看到,时间抽选是输入奇偶分解,输出顺序;频率抽选是输入顺序,输出奇偶分解。有这样的特点,在实际中,我们通常是将两种方式一起使用,前一级为频率抽选,保证输入可以顺序输入,后一级为时间抽选,保证输出可以顺序输出!
前一级为频率抽样,后一级的输入将前一级的结果进行时间抽样,得到顺序输出 四.FFT与IFFT程序的实现思路 我们已经知道FFT可快速运算得到DFT的结果,实际上,在编程时,FFT的算法同样经过变动后可以用作IFFT算法,也就是说,反变换依然快速!
可见对程序的变动不大,十分方便进行反变换 注意,改动后得到的IFFT,实现的功能是不一样的,因此对应的反变换类型发生变化:
如对时间抽选的FFT程序改动后,得到的IFFT程序为频率抽选FFT的逆变换 五.实序列DFT有效计算方法 之前研究的FFT算法中的时间序列都认为是复数形式的,那当我们遇到实序列时,如果为它补充虚部,那计算量会大大增加,因此对于实序列,我们有特殊的处理方法,一下举出两个例子用以说明:
在之前的文章中我们讲到过,序列的实部虚部与序列DFT共轭对称和共轭反对称之间的关系,利用相应关系,可以只用N点的DFT就可以计算得到两个实序列的DFT
将实序列奇偶分解后作为实部和虚部,得到的相应的DFT再用基2时间抽选还原,得到2N长序列的顺序DFT
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/49108.html