关于《算法的乐趣》傅立叶变换一章的补充

本文针对《算法的乐趣》中关于快速傅立叶变换(FFT)的部分进行了补充,澄清了DIT-FFT与DIF-FFT在实际应用中的区别。虽然两者都是离散傅立叶变换的等价算法,但DIT侧重时间抽取,DIF侧重频率抽取。文章指出,原位运算方式是两者共有的实现方式,并非差异所在。主要差异在于蝶形运算过程中的数据处理顺序。同时,文章提供了一个DIT_FFT的算法实现,供读者与书中的DIF_FFT进行比较,以理解其不同之处。
摘要由CSDN通过智能技术生成

一些热心读者反馈在介绍快速傅立叶变换(FFT)部分的描述和代码不一致,比如某位读者反馈前面正文介绍的是DIT-FFT,但是给出的代码实现确是DIF-FFT,让人困惑,本文准备补充一下相关的内容。

DIT-FFT和DIF-FFT,一个是按时间抽取计算(Decimation-In-Time),一个是按频率抽取计算(Decimation-In-Frequency),是两种等价的FFT算法,本章内容主要集中在离散傅立叶变换算法的使用实例,比如频谱和均衡器,因此并没有具体描述这二者的差异,只是在242页中间一段文字中做了说明,原文如下:

“FFT算法对这个位置关系的处理有两种方式,一种是如图15-4所示,在开始蝶形运算之前就对原始数据按照码位关系进行排序,则计算后可直接得到与原始序列一致的输出。这种方式又称为原位运算方式。另一种方式是直接进行蝶形运算,然后按照码位关系对运算后的输出结果重新排序。”

这段文字其实存一个错误,在此需要更正一下,实际上无论是DIT-FFT还是DIF-FFT,都可以实现为原位运算方式。

DIT-FFT和DIF-FFT的主要差异就是蝶形运算的方式,有的资料说属否需要对输入数据倒序重排也是DIT-FFT和DIF-FFT的差异,这一点是仁者见仁,智者见智了,许多高效的算法都可以通过巧妙的循环控制避免这个重排操作,因此这应该不算是DIT和DIF的主要差异。蝶形运算的差异主要体现在参与蝶形运算的两个点的数据与旋转因子的乘法是在减法之前还是在减法之后,这句话理解起来有点困难,可以通过蝶形运算关系图来理解。书中的图15-3是DIT-FFT的蝶形运算关系图,可以看出 X2(n) 先与旋转因子进行了乘法计算,然后又 X1(n

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值