Radix-4 FFT与Radix-2


10

radix-4的实现是否比等效编码的radix-2 FFT更快?如果是这样,为什么会更快呢?

Answers:


5

这取决于。从理论上讲,您可以用基数4保存一些乘数,因为基数4的蝴蝶数量为1/4,每只蝴蝶3 mpy + 8个加法(如果结构正确),基数2的蝴蝶为1 mpy + 2个加法。

因此,就乘法而言,它要好一些,但是在代码结构,异常处理,系数管理,寄存器管理,数位反向寻址等方面存在更高的复杂性。

因此,如果mpy的数量是限制因素,那么这只是一个优势,而对于当今的大多数硬件而言,情况并非如此。


2

在这里!您可以找到两种FFT算法之间主要区别的解释。在文档末尾,有一些表可能会指出,如果数据大小增加,radix-4 fft的性能将优于radix-2。


2

查看基数4 FFT的一种简单方法是将一个基数4的蝴蝶视为包含4个基数2的蝴蝶;一张通过2张蝴蝶,随后一张通过2张蝴蝶。和旋转因子相同,只是蝴蝶的复杂旋转因子因的相位差而消失。但是这意味着将与交换并交换一些加号和减号。因此您的radix-4 FFT运算法则只需要读入4个复数值,一次载入复数旋转,进行一堆算术运算,并将4个结果存储一次。您执行一次基数4遍,并且完成了与两次基数2遍相同的任务。cosπ2cos

我认为乘法和加法的净数量是相同的,但基4蝶形图可以全部在处理器寄存器组中完成(我认为大约有16个不同的浮点寄存器,实数部分和imag部分需要8个在这4个值中,有2个寄存器用于正弦和余弦旋转,也许还有一些或两个寄存器用于暂存)。这比在内存中执行速度更快。


-2

在基数2中,样本数是2的幂,而在基数4中,样本数是4的幂。


1
我建议解释一下为什么这会影响算法速度,这从指数值来看并不明显。
MBaz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.