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

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

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次加法。

具体方法:

将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作大数乘法时,向量数组选用双精度类型

dft变换的两幅图_快速傅里叶变换FFT计算方法 原理及公式相关推荐

  1. dft变换的两幅图_离散傅立叶变换DTFT、DFT和FFT在工程与数学结合的通俗理解

    1.离散时间傅里叶变换DTFT 何为DTFT?就是对连续时间非周期信号进行抽样(乘积),得到的离散时间非周期信号再求傅里叶变换的过程就是DTFT.其实等同于信号频谱与脉冲信号频谱的卷积,这样得到的就是 ...

  2. dft变换的两幅图_图片DFT变换

    今天闲着无聊,做了一下DFT变换. 原理在<数字图像处理(第3版)>P125 在opencv中处理过程为: 以灰度图像的方式读入一张图片 将灰度图片由 CV_8UC1 变换成 CV_32F ...

  3. 快速傅里叶变换(FFT)的原理及公式

    转自:http://www.cnblogs.com/Lyush/articles/3219196.html 非周期性连续时间信号x(t)的傅里叶变换可以表示为 式中计算出来的是信号x(t)的连续频谱. ...

  4. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...

    为了大家能够复现各个图中的结果,我附上了所有我编写的MATLAB代码. 创作不易,未经允许,禁止转载. 另外,说明一下,用MATLAB做FFT并不要求数据点个数必须为以2为基数的整数次方.之所以很多资 ...

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

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

  6. maltab-图像拼接(左右两幅图)

    maltab-图像拼接(左右两幅图) 图像拼接 参考自 https://blog.csdn.net/m0_37565736/article/details/79865990 并修改了其中错误的地方,添 ...

  7. Tecplot将两幅图叠加显示,一幅contour线图,一幅contour色彩图

    正常情况下,我们是在一个workspace下,对一个frame进行操作的,而两幅图,可以视为是两个frame. 1,调节好第一幅图之后,选择上菜单"Frame"-"Sav ...

  8. 如何比较两幅图的相似度

    比较两幅图的相似度可以使用多种方法,以下是其中几种常用的方法: 1. 均方误差(MSE):将两幅图像的像素值逐个进行比较,计算均方误差.均方误差越小,表示两幅图像越相似. 以下是使用 OpenCV 在 ...

  9. Origin——绘制两幅图一起显示,并切换排版方式

    文章目录 1.导入数据 2.垂直绘制两幅图 3.将垂直放置的两幅图变为水平放置 <======================================================== ...

最新文章

  1. 华为在线题--计算字符个数
  2. python中hasattr()、getattr()、setattr()函数的使用
  3. UIImageview 遮罩效果
  4. springboot工程中使用spring.version导致无法启动
  5. 解决Button在IE6、7下的自适应宽度问题
  6. Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
  7. 【Linux】文件描述符与重定向
  8. Android UI进阶之旅3 Material Design之侧滑菜单的两种实现
  9. time 测试一条命令的执行时间
  10. Java是否存在内存泄露
  11. Mac OS X 背后的故事(三)Mach之父Avie Tevanian
  12. 修复未能连接一个window服务器,未能连接一个windows服务的修复方法
  13. windows10安装MySQL8.0
  14. 鸡蛋,必须放在合适的篮子里
  15. 微信朋友如何找回 android,微信怎么恢复好友?简单几步轻松恢复!
  16. python list diff_Python List交集,并集,差集的应用
  17. Java编程快速有效的学习方法有哪些?
  18. 给大学同窗的6个建议
  19. 西安三本计算机专业可报院校,西安三本大学前十名, 西北大学现代学院仅第四...
  20. __attribute__((section(”XXXX“)))的编译属性---section

热门文章

  1. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
  2. AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典、建议收藏)之详细攻略
  3. 成功解决 gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) - (device: 0, name: GeForce 94
  4. 朴素贝叶斯分类器(Navie Bayesian Classifier)中的几个要点(一)
  5. C#获取文件夹下指定格式的所有文件
  6. 移动web——基本知识点总结
  7. CCF-201509-3-模板生成系统
  8. Discuz升级 Database Error : pre_common_syscache ADD PRIMARY KEY (cname)【解决办法】
  9. 详解ADO.NET操作数据库合力创享
  10. DropdownList树