雷德(rader)算法
在实现FFT计算的时候,第一步要做的就是实现倒位序的实现。倒位序从二进制的角度来看,就是把顺序的二进制数翻转过来。如下表所示。但是若单纯的进行二进制翻转复杂度较高,因此这里介绍一下雷德(Rader)算法。
假如使用A[I]存的是顺序位序,而B[J]存的是倒位序。仅仅当I<
J的时候需要变序,在I>
J时无须重复变序。
以N=8为例:
十进制 | 二进制 | ||
---|---|---|---|
顺序 | 逆序 | 顺序 | 逆序 |
0 | 0 | 000 | 000 |
1 | 4 | 001 | 100 |
2 | 2 | 010 | 010 |
3 | 6 | 011 | 110 |
4 | 1 | 100 | 001 |
5 | 5 | 101 | 101 |
6 | 3 | 110 | 011 |
7 | 7 | 111 | 111 |
由上面的表可以看出,按自然顺序排列的二进制数,其下面一个数总是比其上面一个数大1,即下面一个数是上面一个数在最低位加1并向高