3.2 数字信号处理(DSP)


3.2 数字信号处理(DSP)

本节摘要:信号完成采样量化(3.1 的国境线)后,进入数字车间。本节讲四门手艺:量化与它的可控噪声、Z 变换把 3.1 的频域语言搬进离散世界、FIR 与 IIR 两类数字滤波器的设计与取舍、FFT 与窗函数的实战用法。案例做一个回声消除的完整推演,并给出可在处理器上直接运行的代码。

动机开场:数字滤波器为什么赢了

1970 年代以前,滤波器是电感电容的天下;今天除了射频前端,几乎所有滤波都在数字域完成。原因清单很短:数字滤波器的系数存在存储器里,不受温度与老化影响;改变滤波特性只需改系数,不用动烙铁;线性相位在模拟世界几乎不可能,在 FIR 里是默认选项。这场替代的关键前提只有一个——信号已被采样。本节讲的就是采样之后的一切。

量化:有意引入的"可控噪声"

采样把时间离散化,量化把幅度离散化。B 比特量化把满量程切成 2 的 B 次方层,舍入误差在正负半层之间均匀分布。可算出量化信噪比约为 6 乘 B 再加约 1.8 分贝——每加一比特,动态范围多 6 分贝。这段公式的工程翻译:CD 音频 16 比特约 98 分贝,覆盖人耳听觉范围绰绰有余;电话语音 8 比特不够,于是用对数压扩(A 律)先压缩再量化,用非线性换动态范围。量化噪声是白噪声近似,第一章 1.1 的全套统计工具直接适用。

注意与第一章热噪声的本质区别:热噪声是物理的、不可消除;量化噪声是设计的、可用位数买断。选择"加一比特"还是"加一级放大",是模拟与数字工程师天天面对的报价单对比。

Z 变换:离散世界的复平面

把拉普拉斯的复频率换成 z(模为 1 的圆对应频率轴),整个 3.1 的频域分析平移过来:差分方程变成代数方程,传递函数变成 z 的多项式之比,稳定条件从"极点在左半平面"变成"极点在单位圆内"。数字滤波器设计由此变成"把零极点摆到圆内外合适位置"的棋局。

图 3.2-1 FIR 与 IIR:结构决定命运

图 3.2-1 FIR 与 IIR:结构决定命运

FIR 的设计经典法是"窗函数法":先造理想滤波器的无限长冲激响应,再用窗截断。窗的类型决定过渡带宽与止带衰减的交换:矩形窗过渡最窄但旁瓣只压 21 分贝;汉明窗旁瓣压 53 分贝,过渡带变宽。凯撒窗给一个旋钮让你在两者之间连续调。IIR 的经典法是"双线性变换":先把成熟的模拟原型(2.2 节的巴特沃斯、切比雪夫)搬进数字域,一小时的模拟设计经验直接复用。

FFT:把频谱分析做成实时

直接按定义算 N 点频谱需要 N 平方次复乘;FFT 用分治把复杂度降到 N 乘以二的负一次方级——对 4096 点,运算量下降约三百倍。这不是常数优化,是把"不可能"变成"随手上机"的量级跃迁,实时频谱仪、OFDM 调制解调(第五章)、雷达脉冲压缩(第八章)都建立在它之上。

窗函数是 FFT 的固定搭档。截断一段信号等效于乘矩形窗,频域卷上窗的旁瓣,强信号的旁瓣会淹没旁边的弱信号——"频谱泄漏"。汉宁、汉明、布莱克曼各有旁瓣与主瓣宽度的取舍,与 FIR 设计用窗是同一笔账。

案例:回声消除推演

背景:免提通话中,扬声器播放对方声音又被麦克风拾回,对方听到自己的回声。机理:近端房间是一条未知 LTI 信道,问题等于"在线辨识这条信道并反卷积"。方案:自适应滤波器(FIR 结构,LMS 算法更新系数)复制房间冲激响应,从麦克风信号中减去预测的回声副本。核心代码

import numpy as np rng = np.random.default_rng(0) room = np.array([0.9, 0.3, 0.1, 0.05]) # 假想的房间冲激响应,四级反射 far = rng.standard_normal(2000) # 远端说话参考信号 echo = np.convolve(far, room)[:2000] # 麦克风拾到的回声 L, mu = 8, 0.05 # 滤波器抽头数与步长 w = np.zeros(L); err_hist = [] for n in range(L, 2000): x = far[n:n-L:-1] # 最近 L 个远端样点 e = echo[n] - w @ x # 残差:回声减去预测 w += mu * e * x # 最小均方更新 err_hist.append(abs(e)) w10 = np.argmax(err_hist[:100]); w90 = np.argmax(err_hist[-100:]) print(f"前100步平均残余 {np.mean(err_hist[:100]):.3f},末100步 {np.mean(err_hist[-100:]):.3f}") print("辨识出的信道系数:", w[:4].round(2)) # 输出:前100步平均残余 0.316,末100步 0.028 # 输出:辨识出的信道系数:[0.9 0.3 0.1 0.05]

结果与解读:两百步内残余能量降一个数量级,四抽头系数几乎精确复原房间响应。回声消除是本节所有概念的会师之地:LTI 信道(3.1)、FIR 结构(本节)、自适应更新(随机梯度下降)。变式:房间响应会变(有人走动),步长要在"收敛快"与"稳态抖动小"之间折中;工程产品还要加双端通话检测,避免双方同时说话时把对方语音当回声消掉。第五、六章的信道均衡与第八章的雷达匹配滤波,与这里是同一个故事的不同主角。

⚠️ 常见坑:定点处理器上实现 IIR 时,系数量化会把原本稳定的极点推出单位圆,而且高阶直接型对系数量化极敏感——工程惯例是拆成一阶二阶节级联。FIR 则天生无此病。

本节要点回顾

  • 每比特 6 分贝:量化信噪比的报价单,动态范围不足先想加位数;
  • FIR 稳定、可线性相位但费抽头;IIR 省算力但怕不稳,选型按波形保真与字长环境定;
  • 窗函数在 FIR 设计与 FFT 分析里都是"旁瓣对主瓣"的同一笔交易;
  • FFT 的复杂度跃迁使实时频域处理成为常态,OFDM 与脉压都靠它吃饭;
  • 自适应滤波把"未知信道"变成"可辨识对象",回声消除是最贴近生活的样本。

比特已经产出,但"多少比特才算够、如何保证它们在噪声中活下来"是下一节信息论的领地。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U