当前位置: 首页 > news >正文

matlab求kcf算法响应图_1周学FFT——第5天 时间抽选奇偶分解基-2 FFT算法

4b1e4a22eb46b7182926f8003c004cc0.png

时间抽选奇偶分解基-2 FFT算法名字很长,其内容包括三部分内容

  1. 时间抽选(Decimation-in-time,DIT)是指在时域内将序列
    进行分解;
  2. 奇偶分解是指按照n的取值将
    分为奇偶两组,目的是将计算1个N点的DFT转化为计算2个
    点的DFT;
  3. 基-2(radix-2)是指
    ,M为自然数,比如
    就是符合基-2条件的。目的是可以一直进行奇偶分解直到将N点DFT分解为一堆2点DFT。

在不致混淆的时候,时间抽选奇偶分解基-2 FFT算法可简称为基-2 FFT算法。由于基-2可以最大限度的减少乘法运算次数,所以实际当中如果点数不满足基-2条件,可以人为在

中填补零点凑
基-2

以下为算法的推导过程: 序列

的DFT序列为:

,则n取偶数时可写作
,n取奇数时可写作
,按照奇偶将上式分为两组:

根据周期性2

,所以式(1)又可以写作:

则根据定义,

都是
点DFT。于是,将式(3)、(4)带入式(2)可得:

式(5)表示

可分解为两个折半点数的DFT
的和。由于
,因此上式只能表示
点的
。对于
的另一半,可以利用DFT隐含的周期性得到。因为
是周期为
的周期序列,所以:

所以将

代入式(5)得:

将式(5)、(6)合并可得

的完整表达式:

式(3)、(4)、(7)就是基-2FFT算法的核心

例子:

利用基-2 FFT算法求序列x(n)的N=4的DFT。

知乎对多行公式的支持简直一言难尽,没办法只能在其他地方再贴一遍:

1周学FFT——第5天 时间抽选奇偶分解基-2 FFT算法​www.jianshu.com
dff28ba418b631bbae31507d44f08d99.png

另外,通过观察可以发现,计算

各点、
各点和
各点的结构是完全一致的,这种结构被称为
蝶形运算(butterfly operation)

比如计算

的算式可以绘制为如下所示的蝶形运算:

8d3b86ba37d3a4c3ceb6fb10e7d9e8b1.png
计算$X_1(0)$和$X_1(1)$的蝶形运算示意图

再如计算

的算式可以绘制为如下所示的蝶形运算:

4b89c8dcf30e6be3a08cad6defff4966.png
计算$X(0)$和$X(2)$的蝶形运算示意图

将N=4的基-2FFT算法全部的蝶形运算画在一起如下图所示:

63e91fa638081a1c25686fddc22b103c.png
N=4时蝶形运算全貌

一次标准的蝶形运算包含1次复数乘法和2次复数加法(或1次复数乘加和1次复数加法)。如上图所示,N=4的DFT需要4次蝶形运算,共计4次复数乘法,远少于传统DFT的16次复数乘法。更进一步,经过更一般的推导可知,基-2 FFT算法的时间复杂度为

,当N=1024时,基-2 FFT算法比传统算法快64倍。

习题

  1. 根据基-2 FFT算法求序列x(n)的8点DFT,并画出蝶形流程图;
  2. 设计matlab程序,实现基-2 FFT算法。

相关文章:

  • xlwt追加写入_python3中关于excel追加写入格式被覆盖问题(实例代码)
  • 地图上的标签为图片_三种方式制作数据地图
  • arcengine 将一个shp的数据读取到另一个shp_从零开始,构建电子地图网站:0_3_数据处理python(1)...
  • python极简主义_极简主义的践行者:一行python有哪些玩法?
  • idea中maven找不到本地仓库jar包_Mac Intellij Maven使用本地仓库的jar包
  • mysql默认安装目录 linux_关于Linux安装mysql默认配置文件位置详解
  • jquery mysql实现加入购物车_jquery-实现加入购物车效果
  • mysql 查询最近7天 时间戳数据_mysql查询今天、昨天、7天、近30天、本月数据
  • 景安mysql主机_景安国内虚拟主机空间如何创建数据库
  • mysql新手问题大全_初学者必读:MySQL数据库常见问题汇总
  • qopenglwidget 拖动窗口时图形消失_CAD画图时鼠标原来是这么用的!
  • mysql root 赋权_mysql 里对root及普通用户赋权及更改密码的一些命令
  • freebsd linux mysql_怎样在linux或unix服务器上安装、使用MySQL
  • mysql eav_检索MySQL EAV结果作为关系表的最佳性能是什么
  • mysql与后台乱码问题_MySQL+PHP[utf-8]乱码原因与解决方法
  • .pyc 想到的一些问题
  • 【剑指offer】让抽象问题具体化
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • C# 免费离线人脸识别 2.0 Demo
  • canvas绘制圆角头像
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js写一个简单的选项卡
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql外键的使用
  • Rancher如何对接Ceph-RBD块存储
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 缓存与缓冲
  • 简单基于spring的redis配置(单机和集群模式)
  • 简析gRPC client 连接管理
  • 每天10道Java面试题,跟我走,offer有!
  • 目录与文件属性:编写ls
  • 我的zsh配置, 2019最新方案
  • python最赚钱的4个方向,你最心动的是哪个?
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax中的eval及dataType
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)【Hibernate总结系列】使用举例
  • (转载)Linux 多线程条件变量同步
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET上SQLite的连接
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET项目中存在多个web.config文件时的加载顺序