一、从傅里叶级数到傅里叶变换
傅里叶分析是信号处理领域的基石,它为我们提供了一种在频域分析信号的强大工具。理解傅里叶变换需要从周期函数的傅里叶级数开始,逐步扩展到非周期函数的傅里叶变换,最终过渡到数字信号处理中的离散傅里叶变换。
1.1 傅里叶级数
傅里叶级数的核心思想是将周期函数分解为正弦和余弦函数的叠加,使我们能在频域分析信号的频率成分。
对于周期为 T 的函数 f(t),其傅里叶级数展开为:
\(f_T(t) = a_0 + \sum_{n=1}^{\infty} \Big[ a_n \cos(n\omega_0 t) + b_n \sin(n\omega_0 t) \Big]\)
其中基频 \(\omega_0 = \frac{2\pi}{T}\),系数计算公式为:
\(a_n = \frac{2}{T} \int_{-T/2}^{T/2} f(t) \cos(n\omega_0 t)\, dt \quad (n \ge 1)\)
\(b_n = \frac{2}{T} \int_{-T/2}^{T/2} f(t) \sin(n\omega_0 t)\, dt \quad (n \ge 1)\)
\(a_0 = \frac{1}{T}\int_{-T/2}^{T/2} f(t)\, dt\)
示例:周期为 2π 的方波信号,其傅里叶级数展开为:
\(f(t) = \frac{4}{\pi} \left( \sin(t) + \frac{1}{3}\sin(3t) + \frac{1}{5}\sin(5t) + \cdots \right)\)
方波只含奇次谐波的正弦分量,所有余弦系数 \(a_n = 0\),偶次谐波正弦系数 \(b_{2n} = 0\)。
1.2 非周期函数的傅里叶变换
现实世界中的信号大多不是完美的周期信号,因此研究非周期函数的傅里叶变换具有重要意义。当周期 T 趋于无穷大时,周期函数就变成了非周期函数。此时基频 \(\omega_0 = \frac{2\pi}{T} \to 0\),离散频率 \(n\omega_0\) 变为连续频率 \(\omega\);系数 \(a_n, b_n\) 趋于 0,但 \(\frac{2}{T}a_n\) 和 \(\frac{2}{T}b_n\) 保持有限。为此定义两个实函数:
\(A(\omega) = \int_{-\infty}^{\infty} f(t) \cos(\omega t)\, dt\)
\(B(\omega) = \int_{-\infty}^{\infty} f(t) \sin(\omega t)\, dt\)
这就是实数形式的傅里叶变换,分别表示信号在不同频率上的余弦和正弦分量强度。傅里叶变换的公式形式虽然简单,但其物理意义深刻:它将时域信号分解为不同频率的正弦和余弦分量的叠加。
1.3 物理意义解释
- \(A(\omega)\):信号中频率为 \(\omega\) 的余弦分量强度
- \(B(\omega)\):信号中频率为 \(\omega\) 的正弦分量强度
- 若某频率的 \(A(\omega)\) 或 \(B(\omega)\) 为 0,则信号不含该频率的相应分量
例如,方波只含奇次谐波,偶数频率的系数全部为 0。
示例:高斯函数 \(f(t) = e^{-t^2}\) 的傅里叶变换为:
\(A(\omega) = \sqrt{\pi} e^{-\omega^2/4}, \quad B(\omega) = 0\)
高斯函数的傅里叶变换仍是高斯函数,且只有余弦分量(偶函数)。
二、离散傅里叶变换(DFT)
在实际的数字信号处理中,计算机只能处理有限长度、离散采样的信号。离散傅里叶变换(DFT)是连续傅里叶变换在离散域的自然延伸,它将连续信号的傅里叶分析转化为计算机可处理的离散形式。理解 DFT 需要掌握三个关键概念:时域采样、频域采样和复数表示。
2.1 时域采样与离散化
连续信号 \(f(t)\) 经过采样后得到离散序列 \(x[n] = f(nT_s)\),其中 \(T_s\) 为采样间隔,\(f_s = 1/T_s\) 为采样频率。根据奈奎斯特采样定理,为避免混叠,采样频率必须大于信号最高频率的两倍。
时域采样将连续时间 \(t\) 离散化为 \(nT_s\),其中 \(n = 0, 1, \ldots, N-1\),\(N\) 为采样点数。采样后的信号长度为 \(T = NT_s\)。
2.2 频域采样与有限长度
连续傅里叶变换的频域是连续的,但计算机只能处理离散频率。DFT 在频域进行等间隔采样:
\(\omega_k = k \cdot \Delta\omega, \quad k = 0, 1, \ldots, N-1\)
其中频率分辨率 \(\Delta\omega = \frac{2\pi}{T} = \frac{2\pi}{NT_s}\)。这意味着 DFT 只能分析频率为 \(\omega_k\) 的成分,频率间隔由信号总时长 \(T\) 决定。
2.3 复数形式的 DFT
为统一处理余弦和正弦分量,DFT 采用复数形式。其推导可以从实数形式的傅里叶变换出发。
回顾连续傅里叶变换的实数形式:
\(A(\omega) = \int_{-\infty}^{\infty} f(t) \cos(\omega t)\, dt\)
\(B(\omega) = \int_{-\infty}^{\infty} f(t) \sin(\omega t)\, dt\)
利用欧拉公式 \(e^{-i\theta} = \cos\theta - i\sin\theta\),可以将余弦和正弦分量统一表示为复数形式:
\(F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t}\, dt = A(\omega) - iB(\omega)\)
对于离散序列 \(x[n]\),其连续傅里叶变换的离散近似为:
\(F(\omega_k) \approx T_s \sum_{n=0}^{N-1} x[n] e^{-i\omega_k nT_s}\)
代入离散频率 \(\omega_k = k \cdot \Delta\omega = k \cdot \frac{2\pi}{NT_s}\),得到:
\(F(\omega_k) \approx T_s \sum_{n=0}^{N-1} x[n] e^{-i \frac{2\pi}{N} kn}\)
忽略常数因子 \(T_s\)(或将其归一化),定义离散傅里叶变换为:
\(X[k] = \sum_{n=0}^{N-1} x[n] e^{-i \frac{2\pi}{N} kn}, \quad k = 0, 1, \ldots, N-1\)
其中 \(x[n]\) 是时域离散序列,\(X[k]\) 是频域复数序列。实部对应余弦分量,虚部对应正弦分量。
逆离散傅里叶变换(IDFT)为:
\(x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] e^{i \frac{2\pi}{N} kn}, \quad n = 0, 1, \ldots, N-1\)
2.4 DFT 与连续傅里叶变换的关系
DFT 可以看作连续傅里叶变换在时域采样和频域采样双重约束下的近似:
- 时域采样:\(f(t) \to x[n] = f(nT_s)\)
- 频域采样:\(F(\omega) \to X[k] \approx T_s \cdot F(\omega_k)\)
当信号满足带限条件且采样满足奈奎斯特定理时,DFT 能较好地近似连续傅里叶变换。
2.5 DFT 的性质
DFT 具有与连续傅里叶变换相似的性质:
- 线性性:\( \text{DFT}\{ax[n]+by[n]\} = aX[k]+bY[k] \)
- 时移性:\( \text{DFT}\{x[n-m]\} = X[k] e^{-i \frac{2\pi}{N} km} \)
- 频移性:\( \text{DFT}\{x[n] e^{i \frac{2\pi}{N} mn}\} = X[k-m] \)
- 卷积定理:时域循环卷积对应频域乘积
- 对称性:实序列的 DFT 满足 \(X[k] = X^*[N-k]\)
四、FFT介绍和推导
快速傅里叶变换(Fast Fourier Transform,FFT)是计算离散傅里叶变换(DFT)及其逆变换的高效算法。它通过将 DFT 分解为规模更小的子问题,将计算复杂度从 \(O(N^2)\) 降低到 \(O(N \log N)\),从而使得实时频谱分析、数字滤波、图像处理等应用成为可能。
4.1 FFT 的基本思想
FFT 的核心是利用 DFT 的对称性和周期性,将长度为 \(N\) 的序列分解为两个长度为 \(N/2\) 的子序列(奇偶分解),然后递归计算。最经典的算法是 Cooley-Tukey 算法,它要求 \(N\) 是 2 的整数次幂(基 2 FFT)。
DFT 的定义为:
\(X[k] = \sum_{n=0}^{N-1} x[n] e^{-i \frac{2\pi}{N} kn}, \quad k = 0, 1, \ldots, N-1\)
令旋转因子 \(W_N = e^{-i \frac{2\pi}{N}}\),则上式可写为:
\(X[k] = \sum_{n=0}^{N-1} x[n] W_N^{kn}\)
当 \(N\) 为偶数时,可以将序列按奇偶下标拆分为:
\(x_{\text{even}}[m] = x[2m], \quad x_{\text{odd}}[m] = x[2m+1], \quad m = 0, 1, \ldots, N/2-1\)
则 DFT 可分解为:
\(X[k] = \sum_{m=0}^{N/2-1} x_{\text{even}}[m] W_N^{2mk} + W_N^k \sum_{m=0}^{N/2-1} x_{\text{odd}}[m] W_N^{2mk}\)
注意到 \(W_N^{2} = W_{N/2}\),因此:
\(X[k] = E[k] + W_N^k O[k], \quad k = 0, 1, \ldots, N-1\)
其中 \(E[k]\) 和 \(O[k]\) 分别是偶序列和奇序列的 \(N/2\) 点 DFT。由于 \(E[k]\) 和 \(O[k]\) 是周期为 \(N/2\) 的序列,因此只需计算 \(k = 0, 1, \ldots, N/2-1\) 的部分,再利用周期性得到后半部分:
\(X[k] = E[k] + W_N^k O[k], \quad k = 0, 1, \ldots, N/2-1\)
\(X[k+N/2] = E[k] - W_N^k O[k], \quad k = 0, 1, \ldots, N/2-1\)
这就是基 2 时间抽取(DIT)FFT 的蝶形运算公式。
4.2 算法流程与复杂度分析
基 2 FFT 的递归分解过程可以用蝶形图直观表示。以 \(N=8\) 为例:
- 将 8 点序列按奇偶下标分为两个 4 点序列。
- 对每个 4 点序列继续按奇偶分解为四个 2 点序列。
- 计算 2 点 DFT(即蝶形运算)。
- 逐级合并,得到最终的 8 点 DFT 结果。
每一级需要 \(N\) 次复数乘法和 \(N\) 次复数加法,共有 \(\log_2 N\) 级,因此总计算量为 \(O(N \log_2 N)\)。相比直接 DFT 的 \(O(N^2)\),当 \(N\) 较大时(如 \(N=1024\)),FFT 可将计算速度提升数百倍。
这就是FFT和DFT的一些推导和介绍,后面会出这一系列的内容的
:DFT和FFT&spm=1001.2101.3001.5002&articleId=162765863&d=1&t=3&u=ccc6228062e948b4869475ee166c60de)
1万+

被折叠的 条评论
为什么被折叠?



