本文主要是介绍音频筑基:一文搞懂DFT/FFT/DCT/MDCT的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
音频筑基:一文搞懂DFT/FFT/DCT/MDCT的区别
- 前言
- DFT/FFT/STFT/DCT/MDCT一句话对比
- DFT/FFT/STFT/DCT/MDCT的因果
- 扩展资料
傅立叶变换是连接时域与频域的上帝之桥。——《漫画傅里叶解析》
前言
音频信号处理中时常用到时频域转换,这里简单总结下常用的DFT、FFT、STFT、MDCT的区别。开始前,先感谢傅里叶大哥,是他给了我们一碗饭吃。
DFT/FFT/STFT/DCT/MDCT一句话对比
- DFT,Discrete Fourier Transform,离散傅里叶变换,完成离散点时频域转换
- 用途:推广时频域原理,理论上保证了计算机可用性
- FFT,Fast Fourier Transform,快速傅里叶变换,计算长时总体信号的一种快速变换方法
- 用途:支撑理论到实际,落地傅里叶变换在计算机中大规模使用
- STFT,Short Time Fourier Transform,短时傅里叶变换,也称加窗傅里叶变换(Windowed Fourier Transform)
- 用途:音频特征分析
- DCT,Discrete Cosine Transform,离散余弦变换,跟DFT相对应
- 用途:图像压缩
- MDCT,Modified Discrete Cosine Transform,修改型离散余弦变换,顾名思义是DCT的改进,改进点是加窗和交叠
- 用途:音频编解码
注:以上所有方法都可用于时频域转化。
DFT/FFT/STFT/DCT/MDCT的因果
19世纪,傅里叶老哥在用三角函数表示任意函数中获得启发,打开了时频域转换的大门。换个角度看问题后,对做信号处理的打工人来说,从此复杂变简单。
有了理论上的连续函数傅里叶变换FT
,为了支持离散的计算机运算处理,于是就有了离散傅里叶变换DFT
。
而早年间,计算机处理器能力有限,如果光实现时频域转换算法就费老大事儿了,那后面的分析算法就没得搞了。于是,为了加速傅里叶变换速度,聪明的人类又搞出来快速傅里叶变换FFT
。
以上问题都是针对整体信号的变换(连续或离散),接着人们在实际分析信号时,发现代价还是太大,特别是音频信号处理场景,需要流式处理,根本等不及咱变换完就开车溜了。那些脑瓜冒烟的人又想到,根据语音短时平稳性原理对信号切帧分块处理,于是就有了短时傅里叶变换STFT
。
到后面又有了发展,傅里叶变换本质是正余弦cos/sin正交基组合而来,N点数据进去出来2N点的数据,有一半镜像是冗余数据。在信号压缩场景中,那些脑瓜冒烟的人又想到,能不能懒一些,就用一个基来表达,比如余弦cos。于是,就有了离散余弦变换DCT
,实现N点进N点出。
最后,仍是类似的剧情,DCT用于整体信号的变换不太友好,在分帧切块后通过加窗和交叠方法,于是有了改进型离散余弦变换MDCT
。
注:1、STFT后面每一步演变,都包含了之前成果如DFT、FFT。2、MDCT/DCT都可以拆解转换到DFT、FFT实现。3、为增强可读性,部分描述和理论有差异。
更多原理细节分析,请看下篇详解。
扩展资料
- 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧,link
- 感性认识FFT傅里叶变换,link
- 如何给5岁孩子解释DCT,link
这篇关于音频筑基:一文搞懂DFT/FFT/DCT/MDCT的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!