1.离散时间傅里叶变换DTFT

何为DTFT?就是对连续时间非周期信号进行抽样(乘积),得到的离散时间非周期信号再求傅里叶变换的过程就是DTFT。其实等同于信号频谱与脉冲信号频谱的卷积,这样得到的就是连续且周期DTFT频谱(把频谱进行了周期延拓),如下图所示。

2.离散傅里叶变换DFT

DFT其实是在DTFT的频谱上进行采样,使得频谱离散化(频谱和抽样信号进行乘积),这也等同于将时域信号进行了卷积,与采样信号卷积就是周期延拓,得到周期离散时间信号。

那么在数字信号角度分析,首先从DFT公式入手:

首先x(n)的最大周期我们可以确定下来,也就是数字处理时所截取的那一段周期,由上面公式可知其采样点的数目为N,最大周期T=1(角频率w=2π,T=w/2π),即可得知x(n)的最小频率为1(除零外),且频率最小间隔也为1;

为了简单化理解,我们把指数部分通过欧拉变回正余弦表示,且幅度相位都不要了,那么该公式就可以解释为x(n)的N个离散值与sin(2πkn)被分成了N份的值进行相乘:

当k=1时,有

此时n取0-N,就是把2π分成了N份,每一个都对应的一个正弦值,再将每个值分别与x(n)对应值相乘后再累加,最后得到的就是这个频率2π/2π=1时的分量!

同理可得,X(2)、X(3).....、X(N)都是按照这个方式进行计算,这样就可以得到每个频率的分量大小,这也就是工程上DFT变换的本质。

看了这么多,似乎有点费脑子,要不休息一会,打把王者??

我们继续,经过DFT实例计算后我们会发现,频谱是中间对称的,这又是咋回事呢?

其实这个不难理解,把每一个k对应的正弦在坐标轴里面画出来后,会发现其实就是在圆上取点,如下情况:

k=2时,θ=0、4π/N、...... 、4π(N-1)/N

.....

k=N-2时,θ=0、(2πN-4π)/N、(4πN-8π)/N、...... 、(2πN*(N-1)-4π*(N-1))/N

k=N-2进行三角变换后:

θ=0、4π/N、8π/N、...... 、4π(N-1)/N

这下就可以发现,k=N-2时与k=2时相等,这是因为他们在圆上取点是相同的,因此有中心对称的值都是相等的。既然所有的角度相等了,那么正弦取值也相等,再与x(n)相乘求和必定也相等,因此频谱是中间对称的,因此进行傅里叶变换后只采用其一半的频谱进行计算。

简单总结一下:

1.在DFT中,是将2pi、4pi、6pi、...、2kpi分别分成了N份,每一个都是对应k的正余弦的最小变化步长。

2.当被采集信号的时间长度被确定时,其最小频率和最小频率间隔也被确定,即为1/T;那么每一个三角函数的间隔也被确定,即原有最小频率的整数倍k;

3.最小角频率以及最小角频率的整数倍角频率的三角函数可以表示出待求函数x(n);(注意频率和角频率的区别)

4.离散傅里叶变换得到的频谱是中心对称的频谱,只取前N/2分析即可

那么为何不同频率的三角函数与原函数相乘求和就可以得到每一个频率的分量,怎么区别开每一个频率的,不同频率间不会互相干扰吗?

这就涉及到了傅里叶级数完备正交基的概念,可以参考之前写的文章:

舞曜:傅里叶级数和傅里叶变换的巧妙之处

3.快速傅里叶变换FFT

简单来说FFT是DFT的优化算法,是在计算机出来之后,减少DFT的计算复杂度的算法,他的核心精髓是利用系数

的特性对DFT进行简化:

(1) 对称性

(2)周期性

(3)可约性

具体FFT推导咱不说,咱们关注的是结果,是工程什么的应用,故在进行一个N个采样点时,所需计算量如下所示:

1) DFT常规计算时

计算一个X(K)的值需要运算量

复数乘法次数:N ;复数加法次数:N-1

DFT计算全部X(K)的值需要运算量

复数乘法次数:N^2 ;复数加法次数:N*(N-1)

2) 在使用FFT计算时

DFT计算全部X(K)的值需要运算量

复数乘法次数:

;复数加法次数:

要注意的是,在计算机中,一次复数乘法需要通过4次实数乘法和2次实数加法实现。因此FFT在很大程度上减少了计算量,其实无论DFT就是把数据以某种方程变成另外一种数据,而FFT就是把这个方程的计算量进行了优化简化,仅此而已。

在FFT中,值得借鉴的是FFT优化DFT的方法思路,利用了系数

的特征,深究其数学特性的意义,对以后的算法设计优化有很好的参考价值,也对未来的科研道路有所帮助。

以上乃是本人小生对离散傅里叶变换在工程上使用和数学公式所结合的通俗理解,希望能够和大家共同探讨,也愿能够对大家的学习和科研有所帮助,与知友、智友共勉之。

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

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

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

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

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

  3. 理解离散傅立叶变换(一)——傅立叶变换的由来

    理解离散傅立叶变换(一) --傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让 ...

  4. 理解离散傅立叶变换(三.复数)

    理解离散傅立叶变换(三) ------复数形式离散傅立叶变换 复数形式的离散傅立叶变换非常巧妙地运用了复数的方法,使得傅立叶变换变换更加自然和简洁,它并不是只是简单地运用替换的方法来运用复数,而是完全 ...

  5. 理解离散傅立叶变换(四. 复数形式离散傅立叶变换)

    原文链接 https://blog.csdn.net/dznlong/article/details/2280867 理解离散傅立叶变换(四) ------复数形式离散傅立叶变换 复数形式的离散傅立叶 ...

  6. 线性变换+DFT(离散傅立叶变换)+滤波

    线性变换+DFT+滤波 最近又点开了一个关于傅立叶变换的文章,里面通过动画的形式展示了如何将一个时域的输入信号展开成多个正余弦信号的叠加.看起来好像醍醐灌顶,懂了,然后又忘了. 其实,仔细想了想,傅立 ...

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

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

  8. JavaScript实现离散傅立叶变换DFT算法(附完整源码)

    JavaScript实现离散傅立叶变换DFT算法(附完整源码) radianToDegree.js完整源代码 ComplexNumber.js完整源代码 discreteFourierTransfor ...

  9. OpenCV离散傅立叶变换DFT的实例(附完整代码)

    OpenCV离散傅立叶变换DFT的实例 OpenCV离散傅立叶变换DFT的实例 OpenCV离散傅立叶变换DFT的实例 #include "opencv2/core.hpp" #i ...

最新文章

  1. 封装 继承 多态_Java基础知识——封装、继承、多态
  2. spring boot实现下载文件
  3. docker环境 快速使用elasticsearch-head插件
  4. VB.NET工作笔记005---用visual studio2017 编写WCF vb.net webservice
  5. HCIE-Security Day13:防火墙双机热备实验(一)防火墙直路部署,上下行连接交换机
  6. 如何为VMware创建的虚拟PC机安装Linux操作系统
  7. 网络学习(六)Windows XP系统之ghost安装
  8. EditPlus 3.7 中文版已经发布
  9. c语言计算一个三位数的个十百位之和_C语言的那些经典程序
  10. 【推荐】区块链技术及行业应用资料合集
  11. 软件工程基础知识 二
  12. Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
  13. uniapp修改tabbar背景图片
  14. shardingsphere读写分离+分表【笔记】
  15. 鹰潭高通量测序建设细节概述
  16. Taro2.* 小程序配置分享微信朋友圈
  17. 软件测试工程师这个岗位职责是什么?具体都需要干什么?
  18. eclipse3.6 太阳神版 中文汉化插件
  19. BIOS知识枝桠——文件系统
  20. 软件测试周刊(第51期):漂漂亮亮、从从容容地出现在大家面前,不仅是虚荣的事,更是庄重与自信的事。 ​​​

热门文章

  1. 19岁就在南大读博的“00后”女生:这是我的学习经历
  2. 考研最惨专业排行榜,你上榜了吗?
  3. GitHub 标星 7k+,面试官的灵魂 50 问,问到你怀疑人生!
  4. 全网最简单的dubbo源码调试,建议点赞收藏!!!
  5. 截断句子取前k个单词
  6. ACMNO.20 C语言-插入队列 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。
  7. Mat对象与它各种用法
  8. 基于DQN强化学习训练一个超级玛丽
  9. 汇总 | OpenCV4中的非典型深度学习模型
  10. 浅谈RNN,LSTM和GRU