转载文章,文字说明部分修改文字错误、补充一些文字以及在程序中加一些注释,原文网址:

http://www.xuebuyuan.com/2117668.html

程序部分是借鉴介绍FFT算法程序的文章《网上找的纯C实现的FFT,与matlab计算结果完全一样》,网址:

https://blog.csdn.net/cp1300/article/details/28850309

在实现FFT计算的时候,第一步要做的就是实现倒位序的实现,这里有一种算法,叫做雷德(Rader)算法。

自然序排列的二进制数,其下面一个数总比上面的数大1,而倒序二进制数的下面一个数是上面一个数在最高位加1并由高位向低位进位而得到的。 若已知某数的倒序数是J,求下一个倒序数,应先判断J的最高位是否为0,与k=N/2进行比较即可得到结果:

i)如果J<k,说明最高位为0,应把其变成1,即J+N/2,这样就得到倒序数了。

ii)如果J>=k,即J的最高位为1,将最高位化为0,即J-N/2;此时,需要再判断次高位(即与k=N/4进行比较),若为0,将其变位1(即J+N/4),即得到倒序数;如果次高位为1,将其化为0(即J-N/4),再判断下一位为0还是1,为0则变为1,得到倒序数;如果为1则变为0后继续判断下一位......直到判断到某位为0或者判断完全部的位数都为1才会结束判断。

若倒序数大于顺序数,进行换位,否则不变,防止重复交换,变回原数。

C代码如下:

/*----以int型数据为例,假设数据长度N为2的整数次幂*----/
void Rader(int *f, int N)
{
int i,j,t,k;
/*----按照倒位序重新排列原信号----*/
for(i=1,j=N/2;i<=N-2;i++)  // 第一个和最后一个数据是位置不变的,因此i=0和i=N-1不处理
{
if(i<j)  // 原始下标小于变换下标才交换
{
t=f[j];
f[j]=f[i];
f[i]=t;
}
k=N/2; // 用于比较最高位
while(k<=j)  // 位判断为1
{
j=j-k;  // 该位变为0
k=k/2;  // 用于比较下一高位
}
j=j+k;  // 判断为0的位变为1
}
}

[转]FFT倒序算法—雷德算法相关推荐

  1. 算法总结---最常用的五大算法(算法题思路)

    算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...

  2. 生成树的概念,最小生成树Prim算法 Kruskal算法

    求解最小生成树可以用Prim算法 Kruskal算法

  3. 期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用

    期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用 EM的应用 EM算法有很多的应用,最广泛的就是GMM混合高斯模型.聚类.HMM等等.具体可以参考Jerry ...

  4. 数据结构与算法:算法简介

    数据结构与算法:算法简介 雪柯 大工生物信息 提笔为写给奋进之人 已关注 你说呢 . shenwei356 等 70 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国 ...

  5. 社团发现算法-BGLL算法(附代码实现)

    一.社团发现算法 人们发现许多实际网络均具有社团结构, 即整个网络由若干个社团组成,社团之间的连接相对稀疏.社团内部的连接相对稠密.社团发现则是利用图拓扑结构中所蕴藏的信息从复杂网络 中解析出其模块化 ...

  6. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

  7. 【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )

    文章目录 总结 一.标记-清除算法 二.复制算法 三.标记-整理算法 总结 常用的垃圾回收算法 : 标记-清除算法 ; 复制算法 ; 标记-整理算法 ; 这些算法没有好坏优劣之分 , 都有各自的 优势 ...

  8. 【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )

    文章目录 一.双指针算法分类 二.相向双指针示例 ( 有效回文串 ) 一.双指针算法分类 面试时经常遇到 限制算法复杂度为 O(n)O ( n )O(n) 的情况 , 就需要使用以下算法 : 双指针算 ...

  9. 【计算机网络】网络层 : 路由算法 ( 路由算法分类 | 静态路由算法 | 动态路由算法 | 全局性动态路由算法 | 分散性动态路由算法 | 分层次路由选择协议 )

    文章目录 一.路由算法 二.路由算法 分类 三.静态路由算法 四.动态路由算法 五.动态路由算法 分类 六.分层次的路由选择协议 一.路由算法 路由算法 : 选择数传输的 "最佳路由&quo ...

最新文章

  1. 面向对象的程序开发技术C++教学课件系列之四
  2. WebP图片格式,压缩提高28%
  3. Android MIPI转LVDS显示屏调试之--- SD65DSI84概述(2)
  4. Python中:re的match和search区别?
  5. 在github上托管Maven存储库(包含源代码和javadoc)
  6. hfss和python_【技术分享】python和HFSS联合仿真微带天线的教程-射频/微波-与非网...
  7. 设计灵感|如果你喜欢多彩的配色搭配!看这里!
  8. Linux内核升级Broadcom网卡问题(bnx2)
  9. 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈
  10. Bert做不好无监督文本匹配的原因找到了!!
  11. window下git,TortoiseGit安装,以及和github托管项目
  12. 机器人自动化《RPA应用场景和发展趋势》
  13. 阿里云云原生一体化数仓入选 2022数博会“十佳大数据案例”
  14. 一文看懂有刷电机与无刷电机的工作原理及区别
  15. cad里面f命令用不了_南方CASS软件里CAD命令不能使用怎么办
  16. topcon gps 软件下载
  17. ArcGIS入门 (一)
  18. 买的也忒波折了。。。
  19. 超神学院暗质计算机,超神学院之拳皇
  20. 彩色图像增强opencv

热门文章

  1. 关于GIT的SSH加密问题
  2. C# 2018.9.17
  3. 诺基亚在2016年资本市场日上公布重点财务及战略目标
  4. jQuery加载一个html页面到指定的div里
  5. 用NFS挂载root出现:NFS: failed to create MNT RPC client, status=-101(-110)
  6. DispatcherServlet作用
  7. 一个简单文本处理问题的多种解法
  8. Android之ListView原理学习与优化总结
  9. TestLink测试用例:Excel转换XML工具二实现代码
  10. Patrol 7 架构下?的处理方法