转自:http://www.cnblogs.com/Lyush/articles/3219196.html

非周期性连续时间信号x(t)的傅里叶变换可以表示为

式中计算出来的是信号x(t)的连续频谱。但是,在实际的控制系统中能够得到的是连续信号x(t)的离散采样值x(nT)。因此需要利用离散信号x(nT)来计算信号x(t)的频谱。

  有限长离散信号x(n),n=0,1,…,N-1的DFT定义为:

  可以看出,DFT需要计算大约N2次乘法和N2次加法。当N较大时,这个计算量是很大的。利用WN的对称性和周期性,将N点DFT分解为两个N/2点的 DFT,这样两个N/2点DFT总的计算量只是原来的一半,即(N/2)2+(N/2)2=N2/2,这样可以继续分解下去,将N/2再分解为N/4点 DFT等。对于N=2m 点的DFT都可以分解为2点的DFT,这样其计算量可以减少为(N/2)log2N次乘法和Nlog2N次加法。图1为FFT与DFT-所需运算量与计算点数的关系曲线。由图可以明显看出FFT算法的优越性。

将x(n)分解为偶数与奇数的两个序列之和,即

x1(n)和x2(n)的长度都是N/2,x1(n)是偶数序列,x2(n)是奇数序列,则

  其中X1(k)和X2(k)分别为x1(n)和x2(n)的N/2点DFT。由于X1(k)和X2(k)均以N/2为周期,且WN k+N/2=-WN k,所以X(k)又可表示为:

  上式的运算可以用图2表示,根据其形状称之为蝶形运算。依此类推,经过m-1次分解,最后将N点DFT分解为N/2个两点DFT。图3为8点FFT的分解流程。

  FFT算法的原理是通过许多小的更加容易进行的变换去实现大规模的变换,降低了运算要求,提高了与运算速度。FFT不是DFT的近似运算,它们完全是等效的。

关于FFT精度的说明:

因为这个变换采用了浮点运算,因此需要足够的精度,以使在出现舍入误差时,结果中的每个组成部分的准确整数值仍是可辨认的。为了FFT的舍入误差,应该允许增加几倍log2(log2N)位的二进制。以256为基数、长度为N字节的数可以产生大到(256)2N阶的卷积分量,所以为了正确存储,需要16+log2N位精度,若数i是浮点尾数的二进制位数,则有条件: 

如果i=24,对于任意感兴趣(N>256)的N值,单精度是不合适的;如果i=53,也就是采用双精度,则允许N大于106,相当于几百万十进制位。所以,用FFT作大数乘法时,向量数组选用双精度类型。

快速傅里叶变换(FFT)的原理及公式相关推荐

  1. dft变换的两幅图_快速傅里叶变换FFT计算方法 原理及公式

    在实际的控制系统中能够得到的是连续信号x(t)的离散采样值x(nT).因此需要利用离散信号x(nT)来计算信号x(t)的频谱. 有限长离散信号x(n),n=0,1,-,N-1的DFT定义为: DFT ...

  2. Python信号处理小试牛刀——快速傅里叶变换(FFT)

    输入:仿真一个理想的多频信号y,频率为3Hz.10Hz,然后在这个理想信号上添加一个白噪声,得到一个带有白噪声的多频信号y_noise: 处理过程:分别对两个信号进行快速傅里叶变换得到对应的频谱图: ...

  3. C语言二维数组范德蒙,浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  4. 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  5. 基于python的快速傅里叶变换FFT(二)

    基于python的快速傅里叶变换FFT(二) 本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点   FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算 ...

  6. 基于python的快速傅里叶变换FFT(一)

    基于python的快速傅里叶变换FFT(一) FFT可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因. ...

  7. Java中实现快速傅里叶变换FFT

    Java中实现快速傅里叶变换FFT 一.概述 1.傅里叶变换(FT) 2.离散傅里叶变换(DFT) 3.快速傅里叶变换(FFT) 1)单位根 2)快速傅里叶变换的思想 3)蝶形图 4)快速傅里叶变换的 ...

  8. Java编程实现快速傅里叶变换FFT

    快速傅里叶变换的时间复杂度分析 1 快速傅里叶变换FFT 1.1 理论分析 1.1.1 离散傅里叶变换 1.1.2 快速傅里叶变换 1.2 编程实现 1.2.1 算法思想 1.2.2 实验结果 1 快 ...

  9. 快速傅里叶变换FFT C语言实现 可用于嵌入式系统进行模拟采样频谱分析

    快速傅里叶变换C语言实现 模拟采样进行频谱分析 FFT是DFT的快速算法用于分析确定信号(时间连续可积信号.不一定是周期信号)的频率(或相位.此处不研究相位)成分,且傅里叶变换对应的 ω \omega ...

最新文章

  1. python 求均值_数据分析:寻找Python最优计算性能
  2. 【AI-1000问】为什么LeNet5倒数第二个全连接层维度为84?
  3. IOS 控件 - 去除 tableView 多余的横线
  4. 如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
  5. 结构体指针大小_C语言100题集合013-指向结构体变量的指针
  6. html5模板 制作,优秀的H5作品是如何炼成的?模板制作详解!
  7. Scrapy选择器和持久化
  8. [深大深鸿会]利用DevEco Studio从零开发OpenHarmony小游戏——2048(上)
  9. 自我保护第一课加密与防破解
  10. 「链节点活动年度总结」2019年区块链行业会议回顾
  11. 实际开发中常用的SQL
  12. RVDS4.0 破解
  13. Xshell连接centOS7
  14. Sourcetree安装详细(最新版本)
  15. 信息安全技术小测试08设备与环境安全
  16. 【JavaScript】节点的常用属性和方法
  17. 【Python爬虫】 爬取京东商品图片并下载
  18. 软件如何申请数字证书取得操作系统信任?
  19. 20220321在MT6739的android8.1下调试GPIO引脚
  20. 远程视频会议系统/视频调度指挥平台/音视频通话系统EasyRTC在应急指挥领域中的应用

热门文章

  1. 微服务和分布式的区别什么?有什么特点?
  2. 如何在iphone/ipad/itouch上设置新浪VIP邮箱
  3. cad渐变线怎么画_CAD中的图案渐变功能怎么使用 涨知识了
  4. MQ--1( Message queuing)RabbitMQ
  5. Spring高手之路——深入理解与实现IOC依赖查找与依赖注入
  6. Unix/Linux下的Curses库开发指南——第二章 curses库I/O处理
  7. 大端和小端的区别和判断
  8. Hadoop-5-HDFS
  9. 如何零成本实现微信公众号自助查券返利机器人(四)
  10. ssm物业报修管理系统的设计与实现毕业设计源码111024