雷德(Rader)算法

本文介绍了雷德(Rader)算法,一种用于快速傅里叶变换(FFT)计算中实现码位倒序的方法。通过分析二进制数的自然顺序与倒序排列的规律,阐述了如何从已知的倒位序数推导下一个倒位序数,并讨论了在数组倒序排列中的应用,特别是在FFT中的具体实现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一个菜逼的成长。。

解释与图转自:http://m.blog.youkuaiyun.com/article/details?id=50273039
在实现FFT(快速Fourier变换)计算的时候,第一步要做的就是实现码位(二进制码)倒序,这里有一种算法,叫做雷德(Rader)算法。
废话少说,请看下面0-7的顺序排列与倒序排列:
这里写图片描述
由上面的表可以看出,按自然顺序排列的二进制数,其下面一个数总是比其上面一个数大1,即下面一个数是上面一个数在最低位加1并向高位进位而得到的。而倒位序二进制数的下面一个数是上面一个数在最高位加1并由高位向低位进位而得到。
若已知某个倒位序J(0是已知的嘛),要求下一个倒位序数:
首先判断J的最高位是否为0,这可与k=N/2相比较,因为N/2总是等于100..的。

    如果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。然后再判断下一位。。。。(以此循环)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值