|
| N | nk |
| X(k)=DFT[x(n)] = Σx(n)W | ||
|
| n="0" |
|
式(1)
其中,W="exp"(-2π/N)。
在下面的源码里,对应函数为 DFT
算法导论 里介绍了一种递归计算fft地方法, 函数为FFT_recursive
主要利用了 DFT(x) = DFT[0](x) + w*DFT[1](x)
继而导出迭代的fft计算方法,就是现在最常用的,函数为FFT_Iter
步骤为:
将输入数组元素反置变换
for 树的每一层:
for 这一层上需要计算的每一对数据:
根据这一对数据,及蝶形公式,计算上一层的数据
另外,代码里写了一个简单的复数类和向量计算函数
1
#include <vector>
2
#include <math.h>
3
#include <assert.h>
4
//#include <windows.h>
5
6
using namespace std;
7
8
//************************************/
9
// Fushu
10
}
2
3
4
5
6
7
8
9
10