您的位置:首页 > 编程语言 > MATLAB

FFT倒序算法—雷德Rader算法及matlab实现

2017-11-09 23:12 387 查看
在实现FFT(快速Fourier变换)计算的时候,第一步要做的就是实现码位(二进制码)倒序,这里有一种算法,叫做雷德(Rader)算法。

对照码位倒置对应表:



寻找下一个倒序数的基本思想:

如果k>J,则J的最高位为0,只要把该位变为1(J与k=N/2相加即可),就得到下一个倒位序数;
如果K<=J,则J的最高位为1,可将最高位变为0(J与k=N/2相减即可)。
然后(k<=J时)还需判断次高位,这可与k=N\4相比较,若次高位为0,则需将它变为1(加N\4即可)其他位不变,
既得到下一个倒位序数;
若次高位是1,则需将它也变为0。然后再判断下一位。。。。(以此循环)


实现matlab代码:

length=8;
j=length/2;%数组半长
a=[0 1 2 3 4 5 6 7 ];

for i=1:length/2-1%这里实现了奇偶前后分开排序 ,
%比较前半部分序数【0 1 2 3 】,对每对中的后一个偶数进行交换1换4,3换6
if i<j
t=a(j+1);
a(j+1)=a(i+1);%交换
a(i+1)=t;
end
%求下一个倒序数
k=length/2;%数组半长
while(j>=k)%j为下一个倒序数,比较100的最高位1,如果为1,置0
j=j-k;
k=k/2;%变为010,准备比较第二位的1,循环
end
if j<k
j=j+k;%找到为0 的一位,补成1,j就是下一个倒序数
end
end
a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息