蝴蝶算法

来源:互联网 发布:超清和1080p的区别知乎 编辑:程序博客网 时间:2024/04/24 05:15

Radix-r Cooley-Tukey算法

 


  Cooley-Tukey算法区别于其他FFT算法的一个重要事实就是N的因子可以任意选取。这样也就可以使用N=rS的Radix-r算法了。最流行的算法都是以r=2或r=4为基的,最简单的DFT不需要任何乘法就可以实现。例如:在S级且r=2的情形下,下列索引映射的结果是:

蝴蝶算法

  S>2时的-个一般惯例是,在信号流程图中2点DFT是以蝶形图的形式绘出的,图1给出了8点变换的图示。信号流程图己经简化成用所有指向一个节点的箭头都代表加法的形式了,而常系数乘法则是在箭头上加一个因子表示。Radix-r算法具有logr(N)级,并且每组都有相同类型的旋转因子。

蝴蝶算法

  图1 radix-2的长度为8的频率抽取算法

  从图的信号流程图可以看出,计算可以“就地”完成,也就是蝶形所使用的存储位置可以被重写,因为数据在下一步的计算中已不再需要了。Radix-2变换的旋转因子乘法总数是:

蝴蝶算法

因为每两个箭头仅有一个旋转因子。

  由于图1中的算法在频域中开始将最初的DFT分成更短的DFT,所以这种算法就叫作频率抽取(decimation-in-frequency,DIF)算法。典型的输入值是按顺序出现的,而频率值的索引是按位逆序的。表给出了DIF Radix-2算法的特征值。

  表 频率抽取的Radix-2 FFT

蝴蝶算法

  我们还可以用时间抽取(decimation h time,DIT)构造一种算法。在该情况下,首先将输入序列分开,就会发现所有频率值都是按顺序出现的。

  图2给出了索引41的radix-2和radix-4算法的必要索引变换。radix-2算法需要位顺序的反转,也就是位逆序。而radix-4需要首先构造一个2位的“数字”然后再反转这些数字,这种操作就称为数字逆序。

蝴蝶算法

  图2 位逆序和数字逆序

0 0
原创粉丝点击