- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DFT与FFT的算法1
DFT与FFT的算法
DFT是连续傅立叶变换的离散形式,其计算公式为
X(k) =∑x(n)WnkN, k =0,1,…,N-1 n=0,1, …,N-1
式中 x(n)为输入信号的时域采样序列,X(k)为计算输出信号的频域采样序列,其中Wnk=j2πnk/N=cos(2πnk/N)-jsin(2πnk/N).从DFT的计算公式可看出对N点的DFT需计算N2个复数乘和N2个复数加运算.
FFT是DFT的快速算法,其原理是将长序列DFT根据其内在的对称性和周期性分解为短序列的DFT之和.N点的DFT先分解为2个N/2点的DFT,每个N/2点的DFT又分解为N/4点的DFT.最小变换的点数即所谓FFT的“基数”.因此,基数为2的FFT最小变换是2点DFT(或称蝶形运算).在基数为2的N点FFT中,设N=2M,则总共可分成M级运算,每级中有N/2个蝶算,则N点FFT总共有(N/2)log2N个蝶算,而1个蝶算只需一个复数乘法,2个复数加法,因此对N点FFT需计算(N/2)log2N个复数乘法、Nlog2N个复数加法.
DFT与FFT的比较
(1)运算量 一般来说,FFT比DFT运算量小得多,N点的FFT需要做(N/2)log2N次乘法运算,而N点DFT需要做N2次乘法运算,由此看来N点DFT运算量大约是FFT的2N/log2N倍,例如对1 024点的变换,DFT大约是FFT的200倍.然而实际应用时存在下列情况:
①实际应用时DFT中的乘法可以是实数和复数相乘,原因是输入信号可以是实数,而FFT只能是复数和复数的乘法,原因是FFT是分级运算的,中间运算过程都是复数运算,由此来看DFT的运算量大约是FFT的Nlog2N倍,而不是2N/log2N倍.
②实际应用时往往只关心整个频谱中的某一部分,甚至是只关心某些个别频点的谱线.DFT的特点是可按式(1)单独计算某一部分的谱线,而直接进行FFT的算法必须计算整个频谱后才能得到需要的那一部分频谱,实际上已造成了浪费.如果N点的变换中只关心其中的M个频点或称M条谱线,那么实际DFT的运算量大约是FFT的M/N·N/log2N倍,即Mlog2N倍.例如对1 024点的变换,只需关心10条谱线,那么直接用DFT和用FFT的运算量是相同的.因此,实际应用时DFT与FFT相比可能并没有那么慢,甚至有可能比FFT快.
(2)点数或采样率的可选性 对DFT来讲,其变换点数可任意选定,如实际应用时采样率已确定为1 000 Hz,如选变换点数为1 000点,那么每条谱线正好可落在整数频点上.FFT的变换点数必须是有规律的,如基数为2算法的FFT其点数必须是2M,如1 024点、4 096点等.在实际应用时为分析方便,采样率往往要定为变换点数的倍数,如2 048 Hz、8 192 Hz,以避免变换后的频谱落在复杂的带小数点的频点上.因此实际应用时FFT在变换点数选择或采样率选择上可能会带来局限性.
(3)实时性 DFT运算可以用采一点后立即进行相乘、累加运算的方法,即可以采一点算一点,从采样结束到DFT变换结束只需要一个点的运算时间.而FFT运算必须在全部点采集结束后才能开始进行计算,因此从某种角度讲DFT的实时性优于FFT.
(4)数据内存开销 对N点DFT来讲,如只需其中的M个频点,那么在计算时至少需2M个单元的数据内存,对N点FFT来讲则至少需2N个单元的数据内存,另外现有的FFT程序一般需要将系数放在数据内存区,因此需另选N个单元的数据内存,故DFT有可能比FFT更节省数据内存.
(5)程序的复杂性 DFT计算程序非常简单而且可以非常方便地在非DFT专用芯片上实现,而FFT程序较为复杂.
(6)动态范围或抗溢出性 在定点运算的场合,DFT较FFT更容易实现多精度的运算, 例如在TI公司的16位定点DSP处理器中,采用的数据和系数为16位,而相乘并累加的结果可设为双字节即32位,一般来讲设计合理的话不会产生计算溢出的现象,免去了复杂的溢出控制,同时输入输出信号可保持较好的动态范围.FFT在程序中有防溢出的措施,然而在定点运算的场合点数越多输入信号的动态范围越小.
3 结论
在某些具体的应用场合,DFT与它的快速算法FFT相比可能更有优势,而FFT却存在某些局限性.在只需要求出部分频点的频率谱线时DFT的运算时间大为减少,所需的数据内存量也大为减小.DFT与FFT相比还具有变换点数或采样率选择更灵活、实时性更好、更容易控制溢出和动态范围、运算编程简单、可方便地在非DSP芯片中编程实现等优点.因此在实际应用中可以从具体条件出发来比较、选择DFT或FFT,而不应片面地由于FFT是所谓的DFT的快速算法而只选用FFT.
DFT与FFT的算法[1]
DFT是连续傅立叶变换的离散形式,其计算公式为
文档评论(0)