在实现FFT计算的时候,第一步要做的就是实现倒位序的实现,这里有一种算法,叫做雷德(Rader)算法。
下面假如使用A[I]存的是顺序位序,而B[J]存的是倒位序。I<J的时候需要变序,I>J的时候就不用,避免重复而做无用功。
例如 N = 8 的时候,
倒位序 顺序 二进制表示 倒位序 顺序
倒位序 顺序 二进制表示 倒位序 顺序
0
0
000
000
4
1 100
001
2
2 010
010
6
3 110
011
1
4 001 100
5
5 101
101
3
6 011
110
7
7 111
111
自然序排列的二进制数,其下面一个数总比上面的数大1,而倒序二进制数的下面一个数是上面一个数在最高位加1并由高位向低位仅为而得到的。 若已知某数的倒序数是J,求下一个倒序数,应先判断J的最高位是否为0,与k=N/2进行比较即可得到结果。如果k>J,说明最高位为0,应把其变成1,即J+N/2,这样就得到倒序数了。如果J<=k,即J的最高位为1,将最高位化为0,即J-N/2,再判断次高位;与k=N/4进行比较,若为0,将其变位1,即J+N/4