FFT快速傅里叶变换(蝶形算法)详解

第五章 快速傅里叶变换 本章目录 n直接计算DFT的问题及改进的途径 n n 按按时间抽取时间抽取的的基基2-FFT2-FFT算算 法法 n n 按按频率抽取频率抽取的基的基2-FFT2-FFT算算 法法 n n 快速快速傅里叶逆变换傅里叶逆变换(IFFT)(IFFT)算法算法 n n MatlabMatlab实现实现 2 5.1 引言 n n DFTDFT在实际应用中很重要在实际应用中很重要: : 可以计算信号的频可以计算信号的频 谱、功率谱和线性卷积等。谱、功率谱和线性卷积等。 n n 直接按直接按DFTDFT变换进行计算,当序列长度变换进行计算,当序列长度N N很很 大时,计算量非常大,所需时间会很长。大时,计算量非常大,所需时间会很长。 n n FFTFFT并不是一种与并不是一种与DFTDFT不同的变换,而是不同的变换,而是 DFTDFT的一种快速计算的算法。的一种快速计算的算法。 3 5.2 直接计算DFT的问题及改进的途径 n n DFTDFT的运算量的运算量 设复序列x(n) 长度为N点,其DFT为 k=0,,…,N-1 (1)计算一个X(k) 值的运算量 复数乘法次数: N 复数加法次数: N-1 4 5.2.1 DFT的运算量 (2)计算全部N个X(k) 值的运算量 复数乘法次数: N2 复数加法次数: N(N-1) (3)对应的实数运算量 5 一次复数乘法: 4次实数乘法 2次实数加法 + 一个X(k) :4N次实数乘法+ 2N+2(N-1)= 2(2N-1)次实数加法 所以 整个N点DFT运算共需要: N×2(2N-1)= 2N(2N-1) 实数乘法次数: 4 N2 实数加法次数: 6 DFT运算量的结论 N点DFT的复数乘法次数举例 NN2NN2 24644049 41612816384 864256 65 536 16256512 262 144 3210281024 1 048 576 结论:当N很大时,其运算量很大,对实时性很强的信号 处理来说,要求计算速度快,因此需要改进DFT的计算 方法,以大大减少运算次数。 7 5.2.2 减少运算工作量的途径 主要原理是利用系数 的以下特性对DFT进行分解: (1)对称性 (2)周期性 (3)可约性 另外, 8 5.3 按时间抽取的基2-FFT算法 n n 算法原理算法原理 n n 按时间抽取基按时间抽取基-2FFT-2FFT算法与直接计算算法与直接计算 DFTDFT运算量的比较运算量的比较 n n 按时间抽取的按时间抽取的FFTFFT算法的特点算法的特点 n n 按时间抽取按时间抽取FFTFFT算法的其它形式流程图算法的其它形式流程图 9 5.3.1 算法原理 设N=2L,将x(n)按 n 的奇偶分为两组: r =0,1,…, 则 10 式中,X1(k)和X2(k)分别是x1(n)和x2(n)的N/2的DFT。 另外,式中k的取值范围是:0,1, …,N/2-1 。 11 因此, 只能计算出X(k)的前一半值。 后一半X(k) 值, N/2 , N/2 +1, …,N ? 利用 可得到 同理可得 12 考虑到 因此可得后半部分X(k) 及前半部分X(k) k=0,1, …,N/2-1 k=0,1, …,N/2-1 13 蝶形运算 蝶形运算式 蝶形运算信 号流图符号 因此,只要求出2个N/2点的DFT,即X1(k)和X2(k),再 经过蝶形运算就可求出全部X(k)的值,运算量大大减少。 14 以8点为例第一次按奇偶分解 以N=8为例, 分解为2个4点 的DFT,然后 做8/2=4次蝶形 运算即可求出 所有8点X(k)的 值。 15 蝶形运算量比较 复数乘法次数: N2 复数加法次数: N(N-1) 复数乘法次数: 2*(N/2)2+N/2=N2/2+N/2 复数加法次数: 2*(N/2)(N/2-1)+2*N/2=N2/2 nN点DFTDFT的运算量的运算量 n n 分解一次后所需的运算量=分解一次后所需的运算量=2 2个个N/2N/2的的DFTDFT++ N/2N/2蝶形:蝶形: n n 因此通过一次分解后,运算工作量减少了差因此通过一次分解后,运算工作量减少了差 不多一半。不多一半。 16 进一步按奇偶分解 由于N=2L,因而N/2仍是偶数 ,可以进一步把每个N/2点 子序列再按其奇偶部分分解为两个N/4点的子序列。 以N/2点序列x1(r)为例 则有 k=0,1,…, 17 且 k=0,1,…, 由此可见,一个N/2点DFT可分解成两个N/4点DFT。 同理,也可对x2(n)进行同样的分解,求出X2(k)。 18 以8点为例第二次按奇偶分解 19 算法原理 对此例N=8,最后剩下的是4个N/4= 2点的DFT,2点 DFT也可以由蝶形运算来完成。以X3(k)为例。 k=0, 1 即 这说明,N=2M的DFT可全部由蝶形运算来完成。 20 以8点为例第三次按奇偶分解 N=8按时间抽取法FFT信号流图 21 5.3.2 按时间抽取基2-FFT算法与直接计算DFT运算量的比较 由按时间抽取法FFT的信号流图可知,当N=2L时,共有 级 蝶形运算;每级都由 个蝶形运算组成,而每个蝶形有 次复乘、 次复加,因此每级运算都需 次复乘和 次复加。 L N/2 N/2 12 N 22 这样 级运算总共需要: L 复数乘法: 复数加法: 直接DFT算法运算量 复数乘法: 复数加法: N2 N(N-1) 直接计算DFT与FFT算法的计算量之比为M 23 FFT算法与直接DFT算法运算量的比较 NN2 计算量 之比M NN2 计算量 之比M 2414.012816 38444836.6 41644.025665 5361 02464.0 864125.4512262 1442 304113.8 16256328.010241 048 5765 120204.8 3210288012.820484 194 30411 264372.4 64404919221.4 24 5.3.3 按时间抽取的FFT算法的特点 •序列的逆序排列 •同址运算(原位运算) •蝶形运算两节点间的距离 • 的确定 25 序列的逆序排列 由于 x(n) 被反复地按奇、偶分组,所以流图输入端的 排列不再是顺序的,但仍有规律可循: 因为 N=2M , 对于任意 n(0≤n ≤N-1),可以用M个 二进制码表示为: n 反复按奇、偶分解时,即按二进制码的“0” “1” 分解。 •序列的逆序排列 26 倒位序的树状图(N=8) 27 码位的倒位序(N=8) 自然顺序 n二进制数倒位序二进制数倒位序顺序数 00000000 10011004 20100102 30111106 41000011 51011015 61100113 71111117 28 倒位序的变址处理(N=8) 29 同址运算(原位运算) 某一列任何两个节点k 和j 的节点变量进行蝶形运算 后,得到结果为下一列k、j两节点的节点变量,而和其他 节点变量无关。这种原位运算结构可以

蝶形算法 matlab,FFT快速傅里叶变换(蝶形算法)详解相关推荐

  1. MATLAB——FFT(快速傅里叶变换)

    基础知识 FFT即快速傅里叶变换,利用周期性和可约性,减少了DFT的运算量.常见的有按时间抽取的基2算法(DIT-FFT)按频率抽取的基2算法(DIF-FFT). 1.利用自带函数fft进行快速傅里叶 ...

  2. 【经典算法实现 44】理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法)

    [经典算法实现 44]理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法) 一.二维FFTFFTFFT快速傅里叶变换 公式推导 二.二维FFTFFTFFT 及 IFFTIF ...

  3. FFT快速傅里叶变换的应用——画单边频谱图matlab

    FFT快速傅里叶变换的应用--画单边频谱图matlab 快速傅里叶变换在数字信号处理里用的十分广泛,在matlab仿真中,处理信号的时频域变换十分有效,这里结合两个做过的仿真,来说一说fft的应用:画 ...

  4. FFT快速傅里叶变换C语言实现信号处理 对振动信号进行实现时域到频域的转换

    FFT快速傅里叶变换C语言实现信号处理 对振动信号进行实现时域到频域的转换,可实现FFT8192个点或改成其他FFT1024.4096等等,可以直接运行,运行结果与matlab运行的一致,写好了注释, ...

  5. FFT快速傅里叶变换 超详细的入门学习总结

    FFT快速傅里叶变换 说明 本文创作的目的是为自己巩固该算法,加深印象并深入理解,同时也为FFT入门学者提供一份可鉴的学习总结. 原文链接:https://blog.csdn.net/qq_39565 ...

  6. 快速傅里叶变换c语言函数,C语言实现FFT(快速傅里叶变换)

    while(1); } #include #include /********************************************************************* ...

  7. 如何 FFT(快速傅里叶变换) 求幅度、频率(超详细 含推导过程)

    目录 如何 FFT(快速傅里叶变换) 求幅度.频率(超详细 含推导过程) 一. 打颗栗子 二. 求幅度 1. 快速傅里叶变换 2. 求出复数的绝对值 3. 归一化 小结 三. 求频率 1. 频率公式 ...

  8. c语言fft乘法步骤,C语言实现FFT(快速傅里叶变换).doc

    C语言实现FFT(快速傅里叶变换) 择蚁牙幸帆揣邓淌港烬粹甩滋整维含兔忿茂慨渔下餐随扼哇房坏鹅穆礼围引介害芝共茨恿把喜恤寇杖除冕嗓停揍猫调锚遭傀个碱晓频斌硕宾撕坪莱哩腊养掘蹄轴国繁蔬虞靡砖焙倍勾呸怀怒 ...

  9. DL之NIN:Network in Network算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之NIN:Network in Network算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Network in Network算法的简介(论文介绍) 1.Visualiz ...

  10. DL之U-Net:U-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之U-Net:U-Net算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 U-Net算法的简介(论文介绍) 0.实验结果 U-Net算法的架构详解 U-Net算法的案例应用 相 ...

最新文章

  1. Linux自动化测试monkey,APP自动化测试中Monkey和 MonkeyRunner
  2. Spark SQL之RDD转DataFrame
  3. python 发送邮件connect none_Python发送邮件功能示例【使用QQ邮箱】
  4. .NETCore 实现容器化Docker与私有镜像仓库管理
  5. Spring MVC:The request sent by the client was syntactically incorrect
  6. Nodejs 博客系统遇到的问题及解决
  7. leetcode-507-Perfect Number
  8. Spring Boot 学习之,数据库一 Spring-Data-Jpa 初探
  9. linux把一个文件拷贝到另一个目录,linux把某个文件拷贝到不同的目录下面
  10. 用matlab实现快速傅里叶变换的源程序,matlab快速傅里叶变换(三个matlab程序介绍)...
  11. 【浏览器】谷歌浏览器自带翻译失效
  12. 软件需求分析——需求基础
  13. 【012】基于51单片机的可燃气体报警装置proteus仿真与实物设计
  14. 电脑看斗鱼html5卡,win10浏览器观看斗鱼卡怎么修复_win10浏览器打开斗鱼卡死如何解决...
  15. Java 读取 Hadoop 文件系统 文件
  16. c++自动抢购_304不锈钢全自动洗衣机全铜加长特长拖把池 智能止水6分4分水龙头1元优惠券券后价7.8元...
  17. 无人值守安装操作系统
  18. mybatisplus sql 改写2
  19. python抓取天猫店铺归属信息地址(扫码登录)@灵魂走风的江湖
  20. Arduino Timer

热门文章

  1. Python 计算机视觉(五)特别篇 —— 透视变换
  2. Go语言使用protobuf快速入门
  3. CISP 考试教材《第 8 章 知识域:物理与网络通信安全》知识整理
  4. 24 Hour Wallpaper for Mac(动态桌面壁纸软件)
  5. BUUCTF WEB easyweb
  6. 机器学习算法对比分析
  7. Office批量打印助手V8.5最新版
  8. Stata初步处理CFPS数据(merge)
  9. 计算机软考知识点总结,计算机软考考试必备知识点:风险识别
  10. Cannot create file C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr