以下内容来自这里,概念解释的很清楚,搬过来做个备忘,末尾有补充。

很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一下前四者的关系。

首先说明一下,我不是数字信号处理专家,因此这里只站在学生的角度以最浅显易懂的性质来解释问题,而不涉及到任何公式运算。

学过卷积,我们都知道有时域卷积定理频域卷积定理,在这里只需要记住两点:

  1. 在一个域的相乘等于另一个域的卷积;

  2. 与脉冲函数的卷积,在每个脉冲的位置上将产生一个波形的镜像。(在任何一本信号与系统课本里,此两条性质有详细公式证明)

下面,就用这两条性质来说明DFT,DTFT,DFS,FFT之间的联系:

先看图片:

首先来说图(1)和图(2),对于一个模拟信号,如图(1)所示,要分析它的频率成分,必须变换到频域,这是通过傅立叶变换即FT(Fourier Transform)得到的,于是有了模拟信号的频谱,如图(2);注意1:时域和频域都是连续的!

但是,计算机只能处理数字信号,首先需要将原模拟信号在时域离散化,即在时域对其进行采样,采样脉冲序列如图(3)所示,该采样序列的频谱如图(4),可见它的频谱也是一系列的脉冲。所谓时域采样,就是在时域对信号进行相乘,(1)×(3)后可以得到离散时间信号x[n],如图(5)所示;由前面的性质1,时域的相乘相当于频域的卷积,那么,图(2)与图(4)进行卷积,根据前面的性质2知,会在各个脉冲点处出现镜像,于是得到图(6),它就是图(5)所示离散时间信号x[n]的DTFT(Discrete time Fourier Transform),即离散时间傅立叶变换,这里强调的是“离散时间”四个字。注意2:此时时域是离散的,而频域依然是连续的。

经过上面两个步骤,我们得到的信号依然不能被计算机处理,因为频域既连续,又周期。我们自然就想到,既然时域可以采样,为什么频域不能采样呢?这样不就时域与频域都离散化了吗?没错,接下来对频域在进行采样,频域采样信号的频谱如图(8)所示,它的时域波形如图(7)。现在我们进行频域采样,即频域相乘,图(6)×图(8)得到图(10),那么根据性质1,这次是频域相乘,时域卷积了吧,图(5)和图(7)卷积得到图(9),不出所料的,镜像会呈周期性出现在各个脉冲点处。我们取图(10)周期序列的主值区间,并记为X(k),它就是序列x[n]的DFT(Discrete Fourier Transform),即离散傅立叶变换。可见,DFT只是为了计算机处理方便,在频率域对DTFT进行的采样并截取主值而已。有人可能疑惑,对图(10)进行IDFT,回到时域即图(9),它与原离散信号图(5)所示的x[n]不同呀,它是x[n]的周期性延拓!没错,因此你去查找一个IDFT的定义式,是不是对n的取值区间进行限制了呢?这一限制的含义就是,取该周期延拓序列的主值区间,即可还原x[n]!

FFT呢?FFT的提出完全是为了快速计算DFT而已,它的本质就是DFT!我们常用的信号处理软件MATLAB或者DSP软件包中,包含的算法都是FFT而非DFT。

DFS,是针对时域周期信号提出的,如果对图(9)所示周期延拓信号进行DFS,就会得到图(10),只要截取其主值区间,则与DFT是完全的一一对应的精确关系。这点对照DFS和DFT的定义式也可以轻易的看出。因此DFS与DFT的本质是一样的,只不过描述的方法不同而已。

不知道经过上面的解释,您是否明白各种T的关系了呢?如果您不是算法设计者,其实只要懂得如何使用FFT分析频谱即可,博主近期会更新一篇文章,专门介绍如何利用FFT分析简单信号的频谱。

其实个人认为,纠结了这么多,就是为了打破现实模拟世界与计算机数字世界的界限呀!

补充:

若f1(t)↔F1(ω),f2(t)↔F2(ω)f _ { 1 } ( t ) \leftrightarrow F _ { 1 } ( \omega ) , f _ { 2 } ( t ) \leftrightarrow F _ { 2 } ( \omega )f1​(t)↔F1​(ω),f2​(t)↔F2​(ω), F表示傅立叶变换。则,

时域卷积定理:
F[f1(t)∗f2(t)]=F1(ω)∙F2(ω)F \left[ f _ { 1 } ( t ) * f _ { 2 } ( t ) \right] = F _ { 1 } ( \omega ) \bullet F _ { 2 } ( \omega ) F[f1​(t)∗f2​(t)]=F1​(ω)∙F2​(ω)
*表示卷积。时域卷积定理表明两信号在时域的卷积积分对应于在频域中该两信号的傅立叶变换的乘积。

频域卷积定理:
F[f1(t)∙f2(t)]=12πF1(ω)∗F2(ω)F \left[ f _ { 1 } ( t ) \bullet f _ { 2 } ( t ) \right] = \frac { 1 } { 2 \pi } F _ { 1 } ( \omega ) * F _ { 2 } ( \omega ) F[f1​(t)∙f2​(t)]=2π1​F1​(ω)∗F2​(ω)
频域卷积定理表明两信号在时域的乘积对应于这两个信号傅立叶变换的卷积除以(2*pi)

卷积定理揭示了时间域与频率域的对应关系。
DTFT:离散时间信号的傅立叶变换

离散信号x(n)

对离散的信号进行傅立叶变换,变换后的频谱为周期的连续函数,
X(ejω)=∑n=−∞∞x(n)e−jωnX \left( e ^ { j \omega } \right) = \sum _ { n = - \infty } ^ { \infty } x ( n ) e ^ { - j \omega n } X(ejω)=n=−∞∑∞​x(n)e−jωn

可以看出频谱为连续的,这对计算机反变换的操作有困难。

因此提出DFT,即把频谱也离散化,便于恢复原信号。

DFT:离散傅立叶变换
X(k)=∑n=0N−1x(n)exp⁡(−j2πNnk)k=0,1…,N−1X ( k ) = \sum _ { n = 0 } ^ { N - 1 } x ( n ) \exp \left( - j \frac { 2 \pi } { N } n k \right) \quad k = 0,1 \ldots , N - 1 X(k)=n=0∑N−1​x(n)exp(−jN2π​nk)k=0,1…,N−1

一文搞懂DTFT,DFT,FFT相关推荐

  1. 一文搞懂:FT、DTFT、DFT、IDFT

    一文搞懂:FT.DTFT.DFT.IDFT 写在前面 一切为了计算机的处理 推导步骤 总结 写在前面 近期重温了一下可爱的数字信号处理,又回想起当初被 FT.DTFT.DFT.IDFT 这几兄弟折腾的 ...

  2. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  3. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  4. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  5. 一文搞懂 Java 线程中断

    转载自   一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...

  6. 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm

    ***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...

  7. 一文搞懂如何使用Node.js进行TCP网络通信

    摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...

  8. dfs dtft dft fft

    傅里叶变换学习笔记 dfs dtft dft fft指的是什么 傅里叶变换的四种可能形式 DFT的定义,DFT与DFS.DTFT及z变换的关系 二级目录 三级目录 dfs dtft dft fft指的 ...

  9. 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass

    本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...

  10. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下

    B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...

最新文章

  1. 参加完Python培训后可以找什么工作
  2. MySQL的log_bin和sql_log_bin 到底有什么区别?
  3. nginx 负载均衡配置_Nginx负载均衡NFS配置
  4. 树莓派4bwlan驱动_【DIY纯手工】用树莓派DIY的桌面电脑
  5. Spring注解使用方法
  6. django3.2.8配置使用mysql
  7. postgres 支持的线程数_为什么 Java 坚持多线程不选择协程?
  8. 制作五彩纸屑转场动效_何时以及如何将五彩纸屑添加到产品UI
  9. 【IDEA】IDEA 设置 字体 可以滚轮 改变大小
  10. ps 如何增加 填充图案
  11. 【Python学习笔记之一】Python关键字及其总结
  12. PHP curl传输文件的版本兼容性
  13. WIN提权总结【本地存档-转载】
  14. g7108 android5,三星G7108V移动4G版一键Root权限获取及USB驱动
  15. 概率论 马尔可夫 切比雪夫等定理的解释
  16. 通俗易懂地解释卷积?
  17. 【BZOJ3653】谈笑风生 离线+树状数组+DFS序
  18. 六自由度机器人(机械臂)运动学建模及运动规划系列(三)——机器人建模及运动学分析的Matlab仿真
  19. 收集欢太积分可参与丰富的用户活动,还有丰厚的福利可以领取~
  20. mysql中声明数组_SQL数据库中怎么定义数组

热门文章

  1. html实现“设为首页”加入收藏”代码
  2. 破解版极品飞车12免费下载 - 卧底风云(极道车神)
  3. 推荐系统(原理介绍)
  4. 软件测试cpu性能测试案例,cpu测试(cpu性能测试软件)
  5. fedora安装字体
  6. Python Pytest自动化测试 获取测试用例执行结果
  7. cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
  8. webservice 框架比较
  9. Perl教程-1.Perl简介
  10. MATLAB:快速傅里叶变换(FFT)