香农在 1948 年划了一条线:给定带宽与信噪比,无论工程怎么做,可靠传输的速率都存在一个上限——信道容量。本节把信息熵、互信息、香农公式串起来,再讲清楚信源编码(挤冗余)与信道编码(加冗余)这对反向操作的逻辑。
阅读完本节,你应当能够:
工程师的日常是追更快。但你早晚撞上一堵别人早已量好尺寸的墙:信道容量。香农的意义不在于给出一个公式,而在于证明"这个上限存在"——再多努力也翻不过去。知道了墙在哪,我们才不会在注定徒劳的方向上白费力气,也才知道某个设计离天花板还有多远的提升空间。
这一节的推导不必手推,但它画出的边界你必须心里有数。
把"信息多少"量化,香农用的工具是信息熵。对一个随机事件 X,若它取每个值 x 的概率是 p(x),单个事件携带的信息是比特数 -log2(p(x)),熵就是它的平均:
H(X) = -Σ p(x)·log2(p(x))。
直观讲,熵是"还没观察时,这个量有多难猜"。取值越平均、越不可预测,熵越高。一个平分两半的硬币熵为 1 比特;若一边概率近乎 1,熵几乎为 0——几乎不用传就知道结果。通信就是想传的东西熵越大、越有信息。
熵不止是抽象概念,它直接告诉你"最少要传几个比特"。给一个中文文本流的例子:对某个只含四种符号的信源,两两等概率时每种符需 2 比特;但当分布偏斜(比如 A 占 90%、其余三种各占约 3.3%)时,平均下来每个符号实际只需约 0.7 比特——这就是信源编码削冗余能换来压缩比的理论依据。用几行代码就能把它算出来:
from math import log2 p = [0.9, 0.033, 0.033, 0.034] # 偏斜分布,字符率 A 极高 H = -sum(pi*log2(pi) for pi in p if pi>0) print("这个信源的熵 =", round(H,3), "比特/符号") # 等概率时本需 2 比特,现在只要约 0.7 比特 —— 省下来的就是冗余
这个数字 0.7 就是"信息内容的硬下限",任何无损压缩都压不到它之下。它把"压缩能省多少"从纯手感变成了可算的账——设计图像、语音编码时,第一件事就是先量源码的熵,看冗余占了几层。
一对随机变量之间共享多少信息,用互信息 I(X;Y) 度量:知道 Y 后,对 X 的不确定度减少了多少。互信息同时是"这一条信道能可靠传送多少"的自然的量——信道的容量,就是输入端在所有输入分布下能榨取的最大互信息。
把互信息用到 AWGN 信道上,得出了那句被引烂了的话:
C = B · log2(1 + SNR),单位比特每秒。
这里 B 是带宽(赫兹),SNR 是信号与噪声功率之比。两个观察几乎立刻改变你的工作方式:
所以工业界常见取舍:带宽不够时加天线阵列用空间换容量(预留给第六章 MIMO,那里的容量随天线数的对数再赚一截),而单纯把发射功率做上去,回报远没有想象中快。理解这点,你就不难理解为什么 5G 拼命扩带宽、堆天线,而不是死磕单个发射功率。
需要留意的细节:SNR 是线性功率比。现场往往拿到 dB,换算成 C 前先转回线性。C=B·log2(1+10^(SNR_dB/10))。
信息论还顺手分清了两笔"画反方向"的账:
直觉提醒:不要因为"编码"俩字就混。信源编码是把信息"拧干",信道编码是给拧干的信息"穿盔甲"。整条数据链上先信源编码、再信道编码,顺序固定;接收端相反,先译码再解压。
容量公式常被误用成"容量够了就一定能传"。实际还差着调制阶数与误码要求——容量是"任意低错误率"的理论极限,现实用 QAM 星座是把可用速率压到容量之下一截才能换可靠。这一截差值,正是第三、四章编码与调制技术的用武之地:把工程速率往容量上限推。
最后摆几个数量级让你对"容量"有手感。20 MHz 带宽、信噪比 15 dB 的信道,香农容量约 20M·log2(1+31.6) ≈ 100 Mbps,这是天花板;实际 5G 单载波在此带宽下往往跑到四到六成的容量。而若把信噪比抬到 30 dB(信号比噪强千倍),容量只涨到约 200 Mbps——功率翻很多、吞吐却翻不到两倍,这正是"对数钝感"的直观代价,也解释了为什么工程上宁可要带宽和天线,也不死堆发射功率。
第一章到此收官。从下一章开始,我们把校准好的仪器对准真正的测量对象——无线信道会在波形上留下什么样的损伤。