探秘基带算法:从原理到5G时代的通信变革【七】FFT/DFT

文章目录

      • [2.6 FFT/DFT](#2.6 FFT/DFT)
        • [2.6.1 离散傅里叶变换(DFT)](#2.6.1 离散傅里叶变换(DFT))
        • [2.6.2 快速傅里叶变换(FFT)](#2.6.2 快速傅里叶变换(FFT))
        • [2.6.3 方法论与分类体系](#2.6.3 方法论与分类体系)
        • [2.6.4 优缺点与应用](#2.6.4 优缺点与应用)
        • [2.6.5 实现细节](#2.6.5 实现细节)

本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解调。其他博客链接如下:

  1. 探秘基带算法:从原理到5G时代的通信变革【一】引言
  2. 探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
  3. 探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码
  4. 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(一)
  5. 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)
  6. 探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法
  7. 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
  8. 探秘基带算法:从原理到5G时代的通信变革【七】FFT/DFT
  9. 探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
  10. 探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
  11. 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比

2.6 FFT/DFT

傅里叶变换(Fourier Transform)是信号处理和数据分析领域的重要工具,而离散傅里叶变换(Discrete Fourier Transform,DFT)和快速傅里叶变换(Fast Fourier Transform,FFT)则是其在数字领域的核心实现。本文将深入探讨DFT与FFT的原理、方法论、分类体系、优缺点以及实际应用方向,并通过详细的公式推导和实例分析帮助读者全面掌握这一技术。


2.6.1 离散傅里叶变换(DFT)

  • 原理

傅里叶变换的核心思想是将时域信号分解为不同频率的正弦波分量。对于连续信号,我们使用连续傅里叶变换;而对于离散信号,则需要采用离散傅里叶变换(DFT)。DFT的基本定义如下:
X k = ∑ n = 0 N − 1 x n e − j 2 π N k n , k = 0 , 1 , ... , N − 1 Xk = \sum_{n=0}^{N-1} xn e^{-j \frac{2\pi}{N} kn}, \quad k = 0, 1, \ldots, N-1 Xk=n=0∑N−1xne−jN2πkn,k=0,1,...,N−1

其中:

  • x n xn xn 是输入信号的第 n n n个采样值。
  • X k Xk Xk 是频域中第 k k k个频率分量。
  • N N N 是信号的总采样点数。
  • e − j 2 π N k n e^{-j \frac{2\pi}{N} kn} e−jN2πkn 是复指数函数,用于表示正弦波分量。

  • DFT公式的逐步推导

为了更好地理解DFT公式,我们可以从欧拉公式入手。欧拉公式表明,复指数函数可以分解为正弦和余弦函数的线性组合:

e − j θ = cos ⁡ ( θ ) − j sin ⁡ ( θ ) e^{-j \theta} = \cos(\theta) - j \sin(\theta) e−jθ=cos(θ)−jsin(θ)

因此,DFT公式可以改写为:

X k = ∑ n = 0 N − 1 x n ( cos ⁡ ( 2 π N k n ) − j sin ⁡ ( 2 π N k n ) ) Xk = \sum_{n=0}^{N-1} xn \left( \cos\left(\frac{2\pi}{N} kn\right) - j \sin\left(\frac{2\pi}{N} kn\right) \right) Xk=n=0∑N−1xn(cos(N2πkn)−jsin(N2πkn))

这说明DFT实际上是将输入信号 x n xn xn投影到一组正交基函数(正弦和余弦函数)上,从而得到信号的频率分量。

图:DFT的几何意义。

进一步观察公式可以发现,DFT的核心运算是一个矩阵乘法操作。如果我们用矩阵形式表示DFT,可以写成:

X = W ⋅ x \mathbf{X} = \mathbf{W} \cdot \mathbf{x} X=W⋅x

其中:

  • X \mathbf{X} X 是频域向量。
  • x \mathbf{x} x 是时域向量。
  • W \mathbf{W} W 是一个 N × N N \times N N×N的矩阵,称为"旋转因子矩阵"。

图:DFT的矩阵表示。

尽管DFT的数学定义简单明了,但其计算复杂度为 O ( N 2 ) O(N^2) O(N2),当 N N N较大时,计算成本会显著增加。为了解决这一问题,FFT应运而生。


2.6.2 快速傅里叶变换(FFT)

快速傅里叶变换(FFT)是一种高效的算法,用于加速DFT的计算。FFT的核心思想是利用对称性和周期性来减少不必要的重复计算。以下是FFT的基本推导过程:

假设输入信号长度 N N N为2的幂次方(即 N = 2 m N = 2^m N=2m),我们可以将DFT公式分为两部分:偶数索引项和奇数索引项。

X k = ∑ n = 0 N / 2 − 1 x 2 n e − j 2 π N k ( 2 n ) + ∑ n = 0 N / 2 − 1 x 2 n + 1 e − j 2 π N k ( 2 n + 1 ) Xk = \sum_{n=0}^{N/2-1} x2n e^{-j \frac{2\pi}{N} k(2n)} + \sum_{n=0}^{N/2-1} x2n+1 e^{-j \frac{2\pi}{N} k(2n+1)} Xk=n=0∑N/2−1x2ne−jN2πk(2n)+n=0∑N/2−1x2n+1e−jN2πk(2n+1)

通过简化指数项,可以得到:

X k = ∑ n = 0 N / 2 − 1 x 2 n e − j 2 π N / 2 k n + W N k ∑ n = 0 N / 2 − 1 x 2 n + 1 e − j 2 π N / 2 k n Xk = \sum_{n=0}^{N/2-1} x2n e^{-j \frac{2\pi}{N/2} kn} + W_N^k \sum_{n=0}^{N/2-1} x2n+1 e^{-j \frac{2\pi}{N/2} kn} Xk=n=0∑N/2−1x2ne−jN/22πkn+WNkn=0∑N/2−1x2n+1e−jN/22πkn

其中:

  • W N k = e − j 2 π N k W_N^k = e^{-j \frac{2\pi}{N} k} WNk=e−jN2πk 称为旋转因子。

由此可见,FFT将原始问题分解为两个规模减半的子问题,从而大幅减少了计算量。最终,FFT的计算复杂度降低为 O ( N log ⁡ N ) O(N \log N) O(NlogN)。

图:FFT的蝶形运算结构。


2.6.3 方法论与分类体系

根据输入信号的特性,DFT和FFT可以分为以下几种类型:

  1. 实数输入DFT :当输入信号为实数时,频域结果具有共轭对称性,即 X k = X ∗ N − k Xk = X^*N-k Xk=X∗N−k。这种对称性可以进一步优化计算效率。

  2. 二维DFT:适用于图像处理等场景,二维DFT可以分解为两次一维DFT的级联操作。

  3. 短时傅里叶变换(STFT):用于分析非平稳信号,通过引入滑动窗口将信号分割为多个短片段,分别进行DFT计算。

表:DFT与FFT的主要分类。

分类 特点
实数输入DFT 频域结果具有共轭对称性,适合处理实数信号。
二维DFT 将二维信号分解为行和列的一维DFT,广泛应用于图像处理领域。
STFT 引入时间窗,适合分析随时间变化的信号特征。

图:STFT。


2.6.4 优缺点与应用

  • 优点
  1. 高效性:FFT算法显著降低了DFT的计算复杂度,使其能够在大规模数据处理中发挥作用。
  2. 普适性:DFT和FFT适用于各种类型的信号处理任务,包括音频、图像、通信等领域。
  3. 理论基础扎实:基于严格的数学理论,能够提供可靠的频域分析结果。

  • 缺点
  1. 对输入长度的要求:FFT要求输入信号长度为2的幂次方,否则需要进行零填充。
  2. 频谱泄漏:由于DFT本质上是对信号的有限采样,可能导致频谱泄漏现象。
  3. 无法直接处理非均匀采样信号:对于非均匀采样的信号,需要额外的预处理步骤。

  • 应用方向

DFT和FFT在现代科技中有广泛的应用,以下列举几个典型场景:

  1. 音频信号处理:通过FFT分析音频信号的频谱特征,可用于音高检测、噪声消除等任务。
  2. 图像处理:二维DFT可以用于图像压缩、滤波和增强等操作。
  3. 通信系统:FFT是OFDM(正交频分复用)调制解调的核心算法之一。
  4. 科学计算:FFT常用于求解偏微分方程、卷积计算等问题。

图:DFT与FFT在音频信号处理中的应用。


2.6.5 实现细节

在实际编程中,可以通过多种语言实现DFT和FFT。以下是一个简单的Python代码示例,展示如何使用NumPy库计算FFT:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 输入信号
x = np.array([1, 2, 3, 4])

# 计算FFT
X = np.fft.fft(x)

# 输出结果
print("FFT Result:", X)

# 绘制频谱图
plt.stem(np.abs(X), use_line_collection=True)
plt.title("FFT Spectrum")
plt.xlabel("Frequency Bin")
plt.ylabel("Amplitude")
plt.show()

相关推荐
InHand云飞小白1 天前
告别有线宽带束缚!5G Wi-Fi 6 CPE赋能企业网络新范式
网络·5g·网络运维·5g路由器·连锁门店·5gcpe·商业联网
Wireless_wifi61 天前
Why IPQ5018 Continues to Thrive in the Wi-Fi 7 Era
linux·5g
Multipath7121 天前
无人区不掉线:多链路聚合路由,为环塔拉力赛筑起“空中通讯走廊”
网络·5g·安全·无人机·实时音视频
WHS-_-20222 天前
Radar Signal Reconstruction in Severe Interference via Robust Tensor Completion
5g
写代码写到手抽筋3 天前
5G上行DCI字段判定:端口 流数 PMI选择详解
java·算法·5g
ZK_H5 天前
MFC学习——简易计算器以及跨应用通信
学习·5g·mfc
星恒讯工业路由器6 天前
星恒讯便携移动路由器的好处
网络·5g·智能路由器·信息与通信·wifi6·便携
写代码写到手抽筋6 天前
天线极化方向核心原理及工程
5g
InHand云飞小白6 天前
连锁门店IT运维实战:如何用“云+端“架构解决分布式网络管理难题
运维·网络·5g·安全·智能路由器·5g路由器
GTfiber7 天前
光特通信高速率SFP光模块:5G通信高质量发展
5g