本节摘要:把信道写成条件概率分布,用"互信息在输入分布上的最大值"定义信道容量;推导 BSC 的容量公式,给出 AWGN 信道的香农-哈特利公式并用代码画出容量-信噪比曲线;交代分贝换算与几个刻在工程师脑子里的工程数字。
一条模拟电话线,带宽三千赫兹,信噪比三十分贝——它的理论传信上限是多少?香农-哈特利公式给出答案:约每秒二十九点九千比特。这个数字在调制解调器时代家喻户晓:无论拨号音怎么优化、均衡器怎么调,越过这条线的产品必然在吹牛。后来的极低速调制解调器长期工作在这条线以下,而接近每秒三十三点六千比特的规格已经贴着线走,再往上(五十六千规格)其实是借用了数字侧的另半条通路——容量公式不饶人。
本节的任务就是把这类"读数"的计算过程完整交出来:信道如何数学化、容量如何定义、两类经典信道的闭式公式、以及如何快速估算任意工程参数下的承重上限。
第 1 章把信道抽象成黑盒,现在拆开:信道就是从输入符号到输出符号的条件概率分布——给定输入,输出按这个分布随机摆动。BSC 是"以概率 p 翻转比特";AWGN 是"输出等于输入加高斯噪声"。信道的全部物理个性(衰减、多径、干扰)都被压进这个分布的形状里。
有了第 2 章的互信息,容量的定义水到渠成:信道容量等于互信息在所有合法输入分布上的最大值。这里"合法"通常指满足功率或成本约束——你不能靠无限加大输入功率来刷读数。这个定义把两件事打包在一起:信道能传多少信息,既取决于信道的噪声分布,也取决于你怎么选择输入。工程师说的"星座整形"、"功率分配",本质上都是在调节输入分布,试图把互信息顶到最大。
读数的单位是比特每信道使用。乘上每秒使用次数,就是工程熟悉的比特每秒。
对翻转概率为 p 的 BSC,互信息可以写成"输出熵减去噪声熵":输出是一个翻转概率为 q 的二元变量(q 由 p 与输入分布共同决定),其熵最大为一比特(输入等概时取到);噪声熵固定为翻转概率的二元熵——噪声造成的糊涂是你无法消除的底数。于是BSC 的容量就是一减去二元熵函数在 p 处的值。翻转概率为零,容量一比特;翻转概率二分之一,容量归零——与第 2 章互信息读数的两个极端完全对上。
# BSC 容量随翻转概率的变化:噪声越接近"半对半",承重越低 from math import log2 def H2(p): return -p * log2(p) - (1 - p) * log2(1 - p) if 0 < p < 1 else 0.0 for p in [0.01, 0.05, 0.10, 0.20, 0.30, 0.50]: print(f"翻转概率 p = {p:<5} 容量 C = {1 - H2(p):.4f} 比特/使用") # 输出: # 翻转概率 p = 0.01 容量 C = 0.9192 比特/使用 # 翻转概率 p = 0.05 容量 C = 0.7136 比特/使用 # 翻转概率 p = 0.10 容量 C = 0.5310 比特/使用 # 翻转概率 p = 0.20 容量 C = 0.2781 比特/使用 # 翻转概率 p = 0.30 容量 C = 0.1187 比特/使用 # 翻转概率 p = 0.50 容量 C = 0.0000 比特/使用
注意容量的对称性:p 与一减 p 给出同一容量。翻转概率零点九的信道"每次都说反话",与从不翻转的信道容量相同——把输出取反就能完全恢复。真正致命的是零点五:输出与输入统计独立,天平两端彻底失联。
连续信道的主角是加性高斯白噪声信道:输出等于输入加方差为 N 的白噪声,输入平均功率不超过 S,带宽 W 赫兹。它的容量有闭式解——容量等于带宽乘以"一加信噪比"的对数。这就是香农-哈特利公式,通信工程最重要的一条等式。
它刻画了三条明确的增益路线。加带宽:容量线性增长,但注意每赫兹的容量(频谱效率)在下降,带宽是越来越贵的增益。加功率:容量只按功率的对数增长——功率翻十倍(十分贝)只多三点三比特左右,这是著名的"对数墙",它解释了为什么无线通信最终转向增加天线数而不是堆功率。降噪声:与加功率对称,效果同样是对数级的。
# 香农-哈特利公式:容量-信噪比曲线与工程速查 from math import log2 def capacity_hz(snr_db): snr = 10 ** (snr_db / 10) # 分贝 → 线性信噪比 return log2(1 + snr) # 每赫兹比特每秒(频谱效率上限) print("信噪比 每赫兹容量上限") for db in [0, 5, 10, 15, 20, 25, 30]: print(f"{db:>4} dB {capacity_hz(db):6.3f} bit/s/Hz") # 输出: # 信噪比 每赫兹容量上限 # 0 dB 1.000 bit/s/Hz # 5 dB 2.057 bit/s/Hz # 10 dB 3.459 bit/s/Hz # 15 dB 5.028 bit/s/Hz # 20 dB 6.658 bit/s/Hz # 25 dB 8.309 bit/s/Hz # 30 dB 9.967 bit/s/Hz # 工程速查:开头的电话线例子 W, snr_db = 3000, 30 print(f"电话线: {W} Hz × {capacity_hz(snr_db):.3f} ≈ {W * capacity_hz(snr_db) / 1000:.1f} kbit/s") # 输出: 电话线: 3000 Hz × 9.967 ≈ 29.9 kbit/s

曲线的读法分三段。低信噪比段最陡:从零分贝往上,每分贝换来约零点几比特的容量,功率是稀缺资源时效率最高。中段进入对数墙:每十分贝只换来约三点三比特的频谱效率增益,功率的边际收益迅速变薄。高信噪比段几乎躺平:这也是为什么卫星与深空链路(信噪比极低)拼命攒功率,而蜂窝网(信噪比中等)转向更密的组网与更多天线。
容量计算绕不开分贝换算,几个锚点值得背下来:十分贝是十倍功率,二十分贝百倍,三十分贝千倍;零分贝是一比一。香农-哈特利在零分贝给出恰好一比特每赫兹——**"一比一的信噪比换来一比特"**是最好记的锚点。再记两条经验:低信噪比时容量约等于一点四四乘以信噪比(线性),增长近似线性;功率增至十倍只加三点三比特每赫兹。有了这三条,拿到任何"带宽加信噪比"的规格,心里能立刻出一个上限读数——超出它的产品宣传,可以直接要求对方解释。
💡 容量是"每信道使用"的属性,工程比特率还要乘使用速率。调制阶数、符号率这些参数决定"每秒使用多少次信道";容量决定"每次使用最多装多少比特"。两者相乘才是理论上限——很多"突破香农极限"的乌龙,是把这两个量纲混在一起比较造成的。
承重读数有了,但"低于承重就真的可靠吗"?下一节进入信息论最著名的定理——香农第二定理,看它如何划出可靠与不可靠的分界线。