DTMWiki 编曲中文百科
首页 chevron_right 百科 chevron_right 数字音频处理 chevron_right 数学工具 chevron_right 傅里叶变换

傅里叶变换

傅里叶变换是将信号从时域变换为频域的工具

person IAMMRGODIE schedule 更新于 2025-05-14

傅里叶变换

傅里叶变换是将信号从时域变换为频域的工具。直观来说,傅里叶变换可以提取一段音频的频率信息。

定义

傅里叶变换一般定义如下,设有模拟信号 f(t)f(t),则其傅里叶变换为:

F{f}(ω)=F(ω)=+f(t)eiωtdt\mathcal{F}\{f\}(\omega) = F(\omega) = \int_{-\infty}^{+\infty}f(t)e^{-i \omega t} \mathrm{d}t

这一过程看作 L2L^2 空间上将 f(t)f(t) 投影到正交基底 eiωte^{-i \omega t} 上的过程。而因为 eiωt=cosωtisinωte^{-i\omega t} = \cos \omega t - i \sin \omega t,从而我们可以认为傅里叶变换提取了频率为 f=ω2πf = \frac{\omega}{2\pi} 的频率分量. F{f}(ω)|\mathcal{F}\{f\}(\omega)| 表示频率为 ff 的分量的“音量”大小,argF{f}(ω)\arg \mathcal{F}\{f\}(\omega) 则表示频率为 ff 的分量的相位。

这一过程因为基函数正交且完备,故可逆。其逆变换为:

F1{F}(t)=12π+F(ω)eiωtdω\mathcal{F}^{-1}\{F\}(t) = \frac{1}{2\pi} \int_{-\infty}^{+\infty}F(\omega)e^{-i \omega t} \mathrm{d}\omega

这一过程可以理解为从正交基底重建原函数的过程。

离散傅里叶变换

在实践过程中,因为数字音频流是离散的,一般使用傅里叶变换的离散版替代 (Discrete Fourier Transform, 简称 DFT),即离散傅里叶变换。假设原始信号是 x[n]x[n],则定义其离散傅里叶变换为

DFT(x)[k]=X[k]=n=0N1x[n]ei2πNkn\operatorname{DFT}(x)[k] = X[k] = \sum\limits_{n=0} ^ {N - 1} x[n] e^{-i\frac{2\pi}{N} kn}

其中 NN 为原始信号的采样点个数,其具体意义与连续傅里叶变换一致。但因为信号离散的缘故,频率计算与采样率 fsf_s 与指标 kk 有关,具体计算方式为 kfsNk\frac{f_s}{N}

同理,这一过程同样可逆,其逆变换即为离散傅里叶变换逆变换 (Inverse Discrete Fourier Transform, 简称 IDFT)

IDFT(X)[n]=x[n]=1Nk=0N1X[k]ei2πNkn\operatorname{IDFT}(X)[n] =x[n] = \frac{1}{N}\sum\limits_{k=0} ^ {N - 1} X[k] e^{-i\frac{2\pi}{N} kn}

快速傅里叶变换

在实践中,不难发现按照原定义计算 DFT 的时间复杂度为 o(N2)o(N^2),这在实时计算中显然效率偏低,因此实践中一般使用分治方式进行优化,即为快速傅里叶变换 (Fast Fourier Transform, 简称 FFT)。以正向傅里叶变换为例(反向同理),其过程如下

首先写出离散傅里叶变换定义式

X[k]=n=0N1x[n]ei2πNknX[k] = \sum\limits_{n=0} ^ {N - 1} x[n] e^{-i\frac{2\pi}{N} kn}

将其按照奇偶项分离有

X[k]=n=0N21x2ne2k(2n)πNi+n=0N21x2n+1e2k(2n+1)πNiX[k] = \sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n} e^{-\frac{2k(2n)\pi}{N}i} + \sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n + 1} e^{-\frac{2k(2n+ 1)\pi}{N}i}

X[k]=n=0N21x2ne2knπN/2i+e2kπNin=0N21x2n+1e2knπN/2iX[k] = \sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n} e^{-\frac{2kn\pi}{N/2}i} + e^{\frac{-2k\pi}{N}i} \sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n + 1} e^{-\frac{2kn\pi}{N/2}i}

n=0N21x2ne2knπN/2i\sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n} e^{-\frac{2kn\pi}{N/2}i}n=0N21x2n+1e2knπN/2i\sum\limits_{n=0} ^ {\frac{N}{2} - 1} x_{2n + 1} e^{-\frac{2kn\pi}{N/2}i} 是采样点为 N2\frac{N}{2} 的傅里叶变换。从而当 NN22 的幂次时,可以对原问题进行分治,其时间复杂度为 o(NlogN)o(N\log N).

search Ctrl K ESC
manage_search 输入关键词开始搜索