看完了变量可以看一下三个循环各自代表的功能,来对整个代码结果做一个整体上的理解。首先,最外侧的循环,对应于第48行的for,代表了当前运算对应第几级。第58行,对应于同一级中有几个旋转因子,所以这个循环在结束前的第73行~75行做的运算就是在计算这一级的下一个旋转因子。第62行的for循环,对应于同一级且同一个旋转因子所要做的运算。比如最左侧的第一级,一共就只有一个旋转因子,所以第58行的for循环只做了一次,而这一级中同一个旋转因子W0N用了4次,做了4个小的碟形运算,所以第62行的for循环做了4次。

另外,还可以看一下这3个循环每次变量增加的值,以及变量最大值。48行的for循环对应级的上升,显然,每个级都要做,所以每次增加1,然后级的最大值就是M所以不能超过代码里的变量m。58行的for循环,对应同一级旋转因子,每个旋转因子参与的运算都要做,所以每次增加1,由31页图可知每一级旋转因子的数量正好与这一级碟形运算的距离(碟形大小)相等,比如第二级中有2个旋转因子,而这一级的碟形大小间距就是2,所以这个循环的最大值(即旋转因子数量)就是le2。62行的循环对应于同一级中同一个旋转因子所做的所有运算,同一级同一旋转因子的距离就是用le表示的,所以这个循环的变量增加值就是le,为了遍历序列的所有输入,所以这个循环的最大值是nm1,也就是总长度-1。

看完了以上这些可以说FFT正变换就看懂了。接下来的IFFT其实是利用了傅立叶变换本身的性质,也是调用FFT实现的,并不复杂。如果要把一个复数序列做逆变换,只需要把这个输入序列的虚数部分符号反一反,然后对它做正变换,做完后再乘以一个缩放因子,然后再把它的虚部符号反一反,所得的结果正好就是直接对这个复数序列做逆变换的结果。这个可以从幻灯片第43页看出来,也可以自己进行公示推导。幻灯片第45页也再次做了证明。幻灯片里的取共轭就是实部不变,虚部符号反一反。

对应于代码可以看到第82~85行,先给输入的复数序列的各个元素的虚部加了一个负号,相当于对这个复数序列取共轭,然后87行做了FFT正变换,89行算了缩放因子。91行~95行的循环把前面的FFT正变换结果用缩放因子做了缩放,并对虚部加了负号相当于又做取了一次共轭。和幻灯片第45页的操作基本一致(只有求共轭和除以N的次序反了,但是这个没区别的)。

这样FFT的正变换和逆变换在sdrsharp里的实现就讲完了,看懂这些后再看sdrsharp里其它信号处理代码应该也没什么问题了。

SDR# (SDRSharp)代码讲解 (九)相关推荐

  1. matlab adsb,SDR# (SDRSharp)代码讲解

    我认为前面讲的这几种类型的代码里,最重要的有两方面:一个是与硬件驱动交互的部分(这部分上一篇已经大致讲了,另外也可以参考我的另一个HackRF代码讲解系列,会找到很多类似的东西,只不过那里调用的lib ...

  2. SDR# (SDRSharp)代码讲解 (二)

    程序结构 进入SDRSharp主文件夹,可以发现下面有很多目录,这些目录主要分为3大类. 第一类是只与界面相关的代码,如:FrequencyEdit.FrequencyManager(频率管理界面). ...

  3. HackRF 代码讲解 (一)

    本文包括驱动.固件.CPLD代码讲解(也包括gr-osmosdr中的相关部分). HackRF是比较早期的一款SDR设备,凭借其相对低廉的价格加上半双工收发能力,在国内的SDR市场中占比很高.这款设备 ...

  4. 手把手教你如何做建模竞赛(baseline代码讲解)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 1.大赛背景 随着科技发展,银行陆续打造了线上线下.丰富多样的客户触 ...

  5. 【资源】Faster R-CNN原理及代码讲解电子书

    <Faster R-CNN原理及代码讲解>是首发于GiantPandaCV公众号的教程,针对陈云大佬实现的Faster R-CNN代码讲解,Github链接如下: https://gith ...

  6. 激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解

    应用背景介绍 自主导航是机器人与自动驾驶的核心功能,而SLAM技术是实现自主导航的前提与关键.现有的机器人与自动驾驶车辆往往会安装激光雷达,相机,IMU,GPS等多种模态的传感器,而且已有许多优秀的激 ...

  7. 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

    应用背景介绍 自主导航是机器人与自动驾驶的核心功能,而SLAM技术是实现自主导航的前提与关键.现有的机器人与自动驾驶车辆往往会安装激光雷达,相机,IMU,GPS等多种模态的传感器,而且已有许多优秀的激 ...

  8. 彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

    视觉三维重建 = 定位定姿 + 稠密重建 + surface reconstruction +纹理贴图.三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取.预处理.点云配准 ...

  9. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解

    sqlserver多表联合查询和多表分页查询的代码讲解 发布时间:2020-05-14 14:42:07 来源:亿速云 阅读:700 作者:Leah 这篇文章主要为大家详细介绍了sqlserver多表 ...

最新文章

  1. win 64位系统安装带有c编写的python模块出现ValueError: [u'path']解决
  2. 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
  3. JavaScript文档
  4. CCNP精粹系列之十六--实现三层交换的vlan间通信和路由器的配合使用
  5. 用Python和Pygame写游戏-从入门到精通(1)
  6. 用VML画图(一些基本的矢量图)(转)
  7. resnet50能用cpu跑吗_2020年12月1日更新。性价比最高入门游戏CPU--intel 10100F装机配置推荐。...
  8. 如何玩转 WebGL 并行计算
  9. uiw 1.2.17 发布,基于 React 16 的组件库
  10. 第 69 章 数据库链接
  11. python+appium自动化测试-重复执行测试用例
  12. (图文)HBASE的知识点以及工作原理的详细解释--架构
  13. 如何获取下拉框lable的数据_如何使用Python获取指定股票的日K线数据?
  14. wpf绘制图片查看器
  15. 标准差公式中,分母是n还是n-1?
  16. TVS防护电路的典型应用
  17. 更好的为学计算机帮助英语,北京教委公布本科跨省转学名单,两学霸为学计算机转出北大...
  18. 概率分布-beta分布
  19. 王师傅c语言游戏,炉石王师傅斗鱼首播!旭旭宝宝都送了10发超火,只有他没来...
  20. logo是啥_logo是什么意思 LOGO知识解读

热门文章

  1. 数据结构实验一:多项式乘法问题
  2. 【MySQL】MySQL之示例数据库Sakila下载及安装
  3. 计蒜客 难题题库 204 草药的价值
  4. PDA汽车检测系统收获
  5. php 以多种分隔符拆分字符串
  6. mac最美屏幕保护程序Aerial安装教程
  7. Windows系统装linux双系统,无需U盘
  8. JavaScript高级程序设计红宝书学习笔记第三章基本概念
  9. 模具的分类,模具的等级,你知道吗,你知道什么是软模和硬模吗?
  10. Amlogic Linux系列(二)新增测试驱动