雷德算法

原创 2013年12月04日 15:54:30

使用雷德算法实现倒位序:

        对于自然顺序(二进制)我们是在低位加 1 得到下一位数,对于倒位序我们是在高位加 1 向低位进位。比如已知一个倒位序数是J求其下一个倒位序数,N位总数 ,把J与N/2比较若J<N/2则J的最高位为 0 ,把最高位置 1 ,就得到了J的下一个倒位序数;若J>=N/2则说明J的最高位为1 ,把最高位置0 ,比较次高位,若次高位为0 ,则把次高位置1,得到J的下一个倒位序,若次高位为1  , 则把次高位置0,以此类推...

以N = 8 为例:

倒位数顺序                  倒位数                  十进制

    000                           000                          0

    001                           100                          4

    010                            010                         2

    011                            110                         6

    100                            001                         1

    101                            101                         5

    110                            011                         3

    111                            111                         7


使用算法实现:(当顺序位序小于到序位序要变序)

#include <iostream>
using namespace  std;

int x[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int y[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int N = 8;

int main()
{
	int i,j,k;
	int temp;

	for(j=0,i=0;i<N-1;i++)    //这里实现了奇偶前后分开排序
	{
		if(i<j)                        //如果i<j,即进行变址
		{
			temp = x[j];
			x[j]  = x[i];
			x[i]  = temp;
		}
		k = N/2;                 //求j的下一个倒位序
		while(j >= k)        //如果k<=j,表示j的最高位为1 
		{
			j = j-k;                 //把最高位变成0
			k = k/2;               //k/2,比较次高位,依次类推,逐个比较,直到某个位为0
		}
		j = j+k;                //把0改为
	}//for()

	for(i = 0 ; i < N ; ++ i)
	{
		printf("%2d      %2d\n" , i , x[i]) ;
	}

	system("pause") ;
	return 0 ;
}




    

雷德(Rader)算法

对于N个数,我们把递增自然数(0、1、2、3、……、N)称为顺序数列;对顺序数列中的每一个数,将其二进制倒序后转化为十进制,称为倒叙数列。下面,以N=8举例,顺序序列为:0,1,2,3,4,5,6,7...
  • axiqia
  • axiqia
  • 2016年03月08日 21:15
  • 2540

雷德算法 (快速傅里叶变换中用到的倒位序算法)

下面假如使用A[I]存的是顺序位序,而B[J]存的是倒位序。IJ的时候就不用,不然就白忙活了。 例如   N = 8 的时候, 倒位序 顺序          二进制表示      倒位序 ...
  • yf0811240333
  • yf0811240333
  • 2014年08月27日 14:39
  • 2166

FFT倒序算法—雷德算法

3)倒序算法——雷德算法   自然序排列的二进制数,其下面一个数总比上面的数大1,而倒序二进制数的下面一个数是上面一个数在最高位加1并由高位向低位仅为而得到的。   若已知某数的倒序数是J,求下一个倒...
  • zwhlxl
  • zwhlxl
  • 2014年06月24日 10:29
  • 3639

雷德(rader)算法

雷德(rader)算法在实现FFT计算的时候,第一步要做的就是实现倒位序的实现。倒位序从二进制的角度来看,就是把顺序的二进制数翻转过来。如下表所示。但是若单纯的进行二进制翻转复杂度较高,因此这里介绍一...
  • baiyvwuxia
  • baiyvwuxia
  • 2015年05月12日 21:13
  • 723

雷德算法

使用雷德算法实现倒位序:         对于自然顺序(二进制)我们是在低位加 1 得到下一位数,对于倒位序我们是在高位加 1 向低位进位。比如已知一个倒位序数是J求其下一个倒位序数,N位总数 ,把J...
  • CorCplusplusorjava
  • CorCplusplusorjava
  • 2013年12月04日 15:54
  • 3054

雷德算法

对数据进行快速傅里叶变换后,输出数据是倒位序的。因此,我们可以在对数据进行快速傅里叶变换之前,先用雷德算法,把原始数据变为倒位序的。这样,再对数据进行快速傅里叶变换,输出数据就是自然顺序的。 雷德算...
  • kcsdnprac
  • kcsdnprac
  • 2016年12月28日 10:05
  • 214

雷德倒序位算法

这个倒序算法主要用到在FFT中,在排序开始时做的奇偶分离用,方便蝶形运算。比如8点FFT结合时的顺序是0,4,2,6,1,5,3,7 ,换成: 0,2,4,6 1,3,5,7   就看出是分...
  • qq_35144795
  • qq_35144795
  • 2017年10月22日 17:04
  • 48

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

在实现FFT(快速Fourier变换)计算的时候,第一步要做的就是实现码位(二进制码)倒序,这里有一种算法,叫做雷德(Rader)算法。 对照码位倒置对应表: 寻找下一个倒序数的基本思想: ...
  • qq_35608277
  • qq_35608277
  • 2017年11月09日 23:12
  • 95

弗雷歇算法实现

弗雷歇距离算法实现
  • shaxiaozilove
  • shaxiaozilove
  • 2017年01月19日 00:07
  • 461

SLAM 学习

01/2007 OpenSLAM.org goes online.  News 03/2015 Raul Mur Artal contributed his ORB-SLAM ...
  • yf0811240333
  • yf0811240333
  • 2016年01月29日 10:15
  • 3301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:雷德算法
举报原因:
原因补充:

(最多只允许输入30个字)