Skip to content

高斯信道:功率对噪声

WARNING

🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。

BSC 是离散翻转。真实链路常常是 加性白高斯噪声Y=X+ZZN(0,N),发送功率受限 E[X2]P。香农公式(每实数维、每用一次)

C=12log2(1+PN)=12log2(1+SNR).

输入高斯时达到容量。纠错码仍要满足 R<C,只是噪声模型换了;短码例子见 Hamming

需要从微分熵差或 dB 换算推一遍时,点开「逐步推导」。


一、微分熵差

连续变量用微分熵 h。高斯噪声下 h(YX)=h(Z)X 无关。功率约束下 Y 的微分熵在 X 高斯时最大,于是 I(X;Y)=h(Y)h(Z) 得到上面的 C。不必在本章推完微分熵的变分——记住「容量随 SNR 对数涨」即可。

保姆级:功率受限是关键。X 可以任意大,你只要把信号喊得比噪声响,错误率想多低有多低,容量会是无穷——那不真实。电池、法规、功放都限制 E[X2]P。噪声方差 N 固定时,唯一的旋钮是信噪比 SNR=P/N。翻倍功率,容量只加 12log2 的一点:高 SNR 时大约每 3 dB 半个 bit(每实数维)。这就是为什么 4G/5G 要靠带宽和多天线堆维数,而不是只把功放开到爆。

AWGN 功率对噪声

图解说明:左是 Y=X+Z 两个高斯;中是 C=12log2(1+SNR);右是容量随 SNR(dB) 上升。BSC 用 h2(p),这里用功率比。

SNRdB=10log10(P/N)。0 dB 时 C=0.5 bit;20 dB 时约 3.3 bit。

逐步推导:从「高斯最大微分熵」到 C=12log2(1+SNR),以及 0 / 10 / 20 dB 的数(点击展开)

一维高斯 N(0,σ2) 的微分熵(nat)是 12ln(2πeσ2)。在方差固定时,高斯是最大微分熵分布。

Y=X+ZZN(0,N)X 独立。则 h(YX)=h(Z)=12ln(2πeN)。功率约束 E[X2]P 推出 E[Y2]P+N。于是 h(Y)12ln(2πe(P+N)),等号当 Y 高斯,即 X 高斯。互信息

I(X;Y)=h(Y)h(YX)12ln(1+PN) nat.

换成 bit:除以 ln2,即 12log2(1+SNR)。这就是容量。

dB:$ \mathrm{SNR}_{\mathrm{lin}}=10^{\mathrm{dB}/10}$。demo 固定 N=1,用 P 调 SNR,打印:

SNR线性 P/NC=12log2(1+SNR)
0dB112log22=0.5 bit
10dB1012log2111.730 bit
20dB10012log21013.329 bit

右图散点不是容量实现:输入只是二进制 ±P(BPSK),达不到高斯输入的 C,但能看见 0 dB 两团糊在一起、10 dB 分开。真正逼近容量要用整形(高斯形状的星座)加好码。


二、代码在做什么

demo.py 左图画 C(SNR);右图在 0 dB 与 10 dB 下各撒 ±P 二进制输入加噪声的散点(不是容量实现,只让「云有多糊」看得见)。终端打印两三个 SNR 的容量。种子 42,每档 200 个点,噪声标准差 N=1

AWGN 容量与散点

二进制输入达不到公式里的 C(公式假定高斯输入),但散点仍能看出 SNR 高时两团分开。


三、小结

概念一句话
AWGNY=X+Z,功率 P
SNRP/N;dB 是 10log10
C12log2(1+SNR)
下游允许失真换更低速率:率失真

下一章 率失真。量子侧噪声模型换掉,见 量子信息

📥 Code

FileViewDownload
demo.pyOpenDownload
exercise.pyOpenDownload

参考

  1. Cover & Thomas, 高斯信道一章
  2. Shannon (1948) 第 IV 部分