信号与系统(一):DFT和FFT

一、从傅里叶级数到傅里叶变换

傅里叶分析是信号处理领域的基石,它为我们提供了一种在频域分析信号的强大工具。理解傅里叶变换需要从周期函数的傅里叶级数开始,逐步扩展到非周期函数的傅里叶变换,最终过渡到数字信号处理中的离散傅里叶变换。

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\) 为例:

  1. 将 8 点序列按奇偶下标分为两个 4 点序列。
  2. 对每个 4 点序列继续按奇偶分解为四个 2 点序列。
  3. 计算 2 点 DFT(即蝶形运算)。
  4. 逐级合并,得到最终的 8 点 DFT 结果。

每一级需要 \(N\) 次复数乘法和 \(N\) 次复数加法,共有 \(\log_2 N\) 级,因此总计算量为 \(O(N \log_2 N)\)。相比直接 DFT 的 \(O(N^2)\),当 \(N\) 较大时(如 \(N=1024\)),FFT 可将计算速度提升数百倍。

这就是FFT和DFT的一些推导和介绍,后面会出这一系列的内容的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值