同步之后,接收端要弄清信道把波形改成了什么、这没法直接改回去。本节分两步走:信道估计先量出信道的冲激/频响,均衡再把信道造成的畸变补偿回去。从时域的 LS 估计与相关,到频域的导频插值,再到迫零/MMSE/自适应均衡的演进,把"算账 + 补偿"这场仗打完整。
阅读完本节,你应当能够:
均衡器要压 ISI,得先知道信道长什么样——没有信道信息就谈不上"逆着修"。信道估计就是这一步的"量尺"。一趟流程先发已知导频,接收端拿收到的导频与实际期望导频对照,反推出信道响应;再用这个估计搭均衡器,把数据部分乘回去修。估计错了,均衡修得越用力错得越狠——所以信道估计的质量决定整条接收链的成败。
把收发关系写成 y=H·x+n(频域每个载波一个标量),已知导频 x_p,那么对信道频响 H 的最小二乘估计是:
H_est = y_p / x_p。
一句话:拿收到的导频除以已知导频,就得到该位置的信道复增益。简单、无偏、当场可用,这是 LS 估计被所有系统选作默认起点的原因。缺点也有——它完全信观测,噪声直接进结果,所以单点 LS 在低信噪比下抖得厉害。加一步:把导频插值/平滑到整个频带,坏点别单点裸奔。时域版本是把预估的时域冲激响应截短(多径就那几径),更干净,这就是"时域 LS + 频域补插"的组合拳。
import numpy as np Np = 16 # 导频子载波数 H_true = np.exp(1j * 0.4 * np.arange(Np)) # 真实信道(示意) x_p = np.ones(Np) # 已知导频(简单起见全 1) n = 0.5 * (np.random.randn(Np) + 1j*np.random.randn(Np)) y_p = H_true * x_p + n H_est = y_p / x_p # LS 估计:接收除导频 mse = np.mean(np.abs(H_est - H_true)**2) print("LS 估计的 MSE:", round(mse, 3))
MSE 会随噪声 n 的增大而涨——这正是 LS 的软肋,也是为什么要在时域/频域里加平滑或去噪的动因。
导频怎么插也大有讲究,它直接对应第2章的相干带宽与相干时间两把尺。时域上,导频符号的间隔不能超过相干时间,否则一段里信道早已变脸,拿到的是过期估计;频域上,导频子载波的间隔不能超过相干带宽,否则在信道快速变化的频段会漏掉关键凹陷。反过来导频插得太密又白白占掉数据资源。所以"导频密度"本质是用可容忍的估计误差,去换尽量大的有效数据吞吐——这是每个多径与时变信道都要反复调的平衡点。
估到信道后,均衡器负责"补偿"。按聪明程度排三档:
| 方案 | 思路 | 优点 | 代价 |
|---|---|---|---|
| ZF | 乘 1/H | 简单、无偏 | 噪声放大 |
| MMSE | 均衡+噪声兼顾 | 综合优、主流 | 需估计噪声功率 |
| LMS | 在线梯度迭代 | 便宜、适应时变 | 收敛慢 |
| RLS | 递推最小二乘 | 收敛快 | 计算与数值敏感 |
选型口诀:有较好信道先验就 MMSE,没先验但时变快就上自适应,深槽环境避 ZF。
第6章会细讲 OFDM,但这里先埋预售:OFDM 把宽带信道切成并行的窄带子载波,每条子载波内近似平衰落,于是信道矩阵退化成对角阵——频域均衡(FEQ)就变成对每个子载波做一个复数除法。这正是"OFDM 用 FFT 把多径均衡从高复杂度拉回每子载波单点除法"的说法来源,也是为什么 4G/5G 爱它。
再补一条工程常遇到的暗礁:估计与均衡之间永远隔着"估计误差",不存在"先估准了再完美补偿"的理想状态。估得粗糙时还硬要拉平信道,往往把已经偏的 H_est 当成了真理,放大误差而不是减小。稳妥的做法是在均衡里显式计入估计不确定性——比如在 MMSE 的噪声项里留一点裕量,或用决策反馈把前期判决反哺回去再估一版。这套"估计-均衡-再反馈"的联合迭代,在高速移动、信道快速变化时几乎是必须的,也是接收机软件栈里最考验打磨的地方。
信道修干净了,最后一步在星座上定夺、用译码掰回剩余错误——解调与译码,接收链的收尾。