第2章:数字信号处理基础回顾

各位同学,咱们今天聊聊数字信号处理的基础。说实话,这部分内容看起来像是数学课,但你要是真把它吃透了,后面做无线通信优化的时候会顺手很多。我当年刚入行时,总觉得这些理论离实际代码很远,直到有一次在项目里被采样率问题坑了一把……嗯,从那以后我再也不敢小看这些基础了。

2.1 采样定理——别让你的信号“说谎”

采样定理,也叫奈奎斯特采样定理。说白了就是一句话:采样频率必须大于信号最高频率的两倍。为什么?因为采样频率不够,信号就会“伪装”成另一个频率,这就是混叠。

核心公式:

fs ≥ 2 × fmax

其中 fs 是采样率,fmax 是信号最高频率分量。

我在项目中遇到过一件事:一个同事采集音频信号,信号最高频率是8kHz,他用了16kHz采样率,按理说够了。但实际回放时出现了奇怪的“嗡嗡”声。查了半天,发现是前端模拟滤波器没做好,高频噪声混进来了。你想想看,采样定理的前提是信号已经限带,如果前端没滤干净,采样率再高也没用。

避坑指南:

我曾经在调试一个无线接收机时,忽略了ADC前的抗混叠滤波器设计。结果信号频谱里出现了虚假的峰值,让我误以为收到了干扰信号。后来加上一个简单的二阶低通滤波器,问题就解决了。记住:采样定理不是ADC的事,是整个信号链的事

2.2 傅里叶变换——从时域到频域的“翻译官”

傅里叶变换,说白了就是把信号从时间域翻译到频率域。时域里我们看到的波形,频域里就是一堆正弦波的叠加。我个人习惯把傅里叶变换理解成“信号分解机”——你给我一个复杂波形,我帮你拆成不同频率、不同幅度的正弦波。

2.2.1 DFT与FFT

DFT(离散傅里叶变换)是数字信号处理的核心工具。公式长这样:

X[k] = Σ x[n] · e^(-j·2π·k·n/N)   (n=0 to N-1)

但直接算DFT太慢了——复杂度是O(N²)。比如1024点DFT,要算一百多万次乘法。所以有了FFT(快速傅里叶变换),把复杂度降到O(N·log₂N)。

变换类型 计算复杂度 1024点计算量
DFT(直接计算) O(N²) 约1,048,576次
FFT(基2算法) O(N·log₂N) 约10,240次

你看这个差距,差了整整两个数量级。所以实际工程里,没人会直接算DFT。我建议你记住:FFT不是另一种变换,而是DFT的高效实现

实战技巧:

做FFT时,数据长度最好是2的幂次(如256、512、1024)。这样可以用基2FFT算法,效率最高。如果数据长度不是2的幂次,可以补零到下一个2的幂次。补零不会增加频率分辨率,但能让频谱看起来更平滑。

2.2.2 频谱泄露与窗函数

做FFT时有个坑——频谱泄露。为什么会这样?因为FFT假设信号是周期延拓的。如果你的采样窗口不是信号周期的整数倍,截断就会产生频谱泄露。

解决办法?加窗。常用的窗函数有:

  • 矩形窗:相当于没加窗,主瓣窄但旁瓣高,泄露严重
  • 汉宁窗:旁瓣降低明显,适合一般频谱分析
  • 海明窗:类似汉宁窗,但旁瓣更低
  • 布莱克曼窗:旁瓣衰减最快,但主瓣最宽

我个人的经验是:做无线通信信号分析时,优先用汉宁窗或海明窗。如果对频率分辨率要求极高,可以考虑矩形窗,但要做好泄露的心理准备。

2.3 数字滤波器设计——FIR与IIR

滤波器是数字信号处理的“看门狗”——把不要的频率成分挡在外面,让需要的信号通过。数字滤波器分两大类:FIR和IIR。

2.3.1 FIR滤波器

FIR(有限冲激响应)滤波器,特点是稳定、线性相位。公式很简单:

y[n] = b₀·x[n] + b₁·x[n-1] + ... + bₙ·x[n-N]

说白了就是加权求和。没有反馈,所以绝对稳定。线性相位意味着所有频率的延迟相同,信号波形不会畸变——这对通信系统特别重要。

我在项目中遇到过:用IIR滤波器做基带信号处理,结果信号眼图变形了。换成等阶数的FIR滤波器,眼图立马清晰了。所以,如果对相位有要求,别犹豫,用FIR

FIR设计要点:

  • 阶数越高,过渡带越陡,但计算量越大
  • 常用设计方法:窗函数法、频率采样法、Parks-McClellan算法
  • 在DSP上实现时,可以用对称系数减少乘法次数

2.3.2 IIR滤波器

IIR(无限冲激响应)滤波器,有反馈,效率高。同样的性能指标,IIR的阶数比FIR低得多。公式带反馈项:

y[n] = b₀·x[n] + b₁·x[n-1] + ... - a₁·y[n-1] - a₂·y[n-2] - ...

IIR的优点是计算量小,缺点是非线性相位可能不稳定。我建议你:

  • 对相位不敏感的场景(如语音、音频)用IIR
  • 对相位敏感的场景(如通信调制解调)用FIR
  • IIR设计时一定要检查极点是否在单位圆内

避坑指南:

我曾经用双线性变换法设计了一个IIR低通滤波器,仿真时一切正常。但移植到定点DSP上后,滤波器开始振荡。查了半天,发现是系数量化后极点移到了单位圆外。解决办法:用更高精度的系数表示,或者改用级联型结构。

2.4 本章知识体系

下面这张图是我画的本章知识结构,帮你理清脉络:

数字信号处理基础 - 知识体系 采样定理 • fₛ ≥ 2·fₘₐₓ • 抗混叠滤波器 • 过采样技术 • 量化噪声 傅里叶变换 • DFT vs FFT • 基2FFT算法 • 频谱泄露 • 窗函数选择 • 频率分辨率 数字滤波器 • FIR滤波器 - 线性相位 - 绝对稳定 • IIR滤波器 - 高效低阶 - 非线性相位 三者共同构成无线通信DSP优化的理论基础

这张图把本章三个核心模块串起来了。采样定理决定了你该用多快的速度采集信号,傅里叶变换帮你分析信号的频率成分,数字滤波器则让你能按需处理这些频率。三者环环相扣,缺一不可。

好了,这一章的内容就到这里。记住:理论是死的,但应用是活的。下次你在DSP上写FFT或者滤波器代码时,想想今天聊的这些坑,能帮你省不少调试时间。


公众号:蓝海资料掘金营,微信deep3321