一文搞懂:FT、DTFT、DFT、IDFT
一文搞懂:FT、DTFT、DFT、IDFT
- 写在前面
- 一切为了计算机的处理
- 推导步骤
- 总结
写在前面
近期重温了一下可爱的数字信号处理,又回想起当初被 FT、DTFT、DFT、IDFT 这几兄弟折腾的傻傻分不清的日子,今天特地在此对它们进行一个梳理。
珠玉在前,非常感谢这篇文章的点拨:一幅图搞懂DFT与DTFT的关系
一切为了计算机的处理
我们知道,FT就是傅里叶变换,其可以将信号从时域变换到频域,但是此刻的信号无论在时域还是频域,都是连续的。
然而,计算机只能处理离散的数据,因此我们要在计算机中完成傅里叶变换,就需要在时域与频域对信号进行采样。
下面,我们通过作图的方式,来梳理一下从 FT 到 DFT 的心路历程。
推导步骤
- 连续信号 x(t) ,经过傅里叶变换 FT 后,变成了 X(f)。(两域均连续,计算机无法处理)
- 对 x(t) 在时域进行采样,得到 x(n) 。
- 对 x(n) 进行 离散时间傅里叶变换(DTFT),得到 X(e^jw)。(频域连续,计算机依然无法处理)
- 对 X(e^jw) 进行采样,并尝试通过逆离散傅里叶变换(IDFT)恢复出 x(n),但是 x(n) 出现了周期延拓。依据时频域卷积定理,一个域的采样会导致另一个域的周期延拓。(两域离散,计算机可以处理,但是无法恢复原序列)
- 因为 X(e^jw) 是周期为 2Π 的周期信号,因此,我们仅在主值区间对 X(e^jw) 进行采样,即可恢复出正确的原序列。
总结
- FT 是针对连续信号的傅里叶变换,或者可以理解为傅里叶变换的统称
- DTFT 是针对离散信号的傅里叶变换
- DFT 是在 DTFT 的基础上,在频域的主值区间内采样得到的结果
- FFT 是 DFT 的一种快速算法
一文搞懂:FT、DTFT、DFT、IDFT相关推荐
- 一文搞懂RNN(循环神经网络)
基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...
- 一文搞懂 Python 的 import 机制
一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
- 一文搞懂 Java 线程中断
转载自 一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...
- 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...
- 一文搞懂如何使用Node.js进行TCP网络通信
摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...
- 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...
- 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下
B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...
- 一文搞懂CAN FD总线协议帧格式
目录 1.为什么会出现CAN FD? 2.什么是CAN FD? 3.CAN FD和CAN总线协议帧异同 4.解析CAN FD帧结构 4.1.帧起始 4.2.仲裁段 4.3.控制段 4.4.数据段 4. ...
最新文章
- 【Runtime】动态添加方法demo
- Java中的断言(assert)
- 成功解决TypeError: unsupported operand type(s) for %: 'NoneType' and 'dict'
- linux抓源地址,【Linux】apt-get 源地址汇总
- android 蓝牙传输分包,彻底掌握Android多分包技术(一)
- 小腹下面是什么部位_为什么肚子上的肉最难减?说好的马甲线呢?
- evc4工程移植vs.net2005所碰到的问题积累
- ORA-03114乌龙处理
- 360公布权威机构对扣扣保镖的测试报告
- 用于角点检测的FAST算法
- 23种设计模式(十六)接口隔离之中介者
- python前端Django指南之Hello worldl输出
- 0x0F转换成二进制
- zcmu 5142: 巴比伦塔
- vr手柄设置_最佳无线VR设置,最新和即将推出
- 人生=亲情+爱情+金钱+理想+友情?
- 弘玑|数字员工赋能金融转型,迈向更加高效灵活的运营模式
- C++第三次实验:税收计算
- 数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)
- ExtJS 6 的一些 样式类配置项