多级BSC二进制对称信道串联信道容量完整推导与Python仿真可视化(P124302148张紫钰)
摘要
二进制对称信道(BSC)是离散无记忆信道最基础模型,多级BSC信道串联是通信链路多级中继传输的简化模型。本文先推导两级BSC串联等效转移矩阵与信道容量闭式解,进一步推广得到m级串联BSC通用容量公式;通过Python完成数值仿真,绘制信道容量随误码率、串联级数变化的关系曲线,直观分析串联链路对传输容量的衰减规律,同时结合通信工程场景解释结论物理意义。
一、研究背景与意义
二进制对称信道BSC广泛用于数字基带传输、二进制调制解调、无线中继通信系统建模。多级中继级联传输时,每一段链路均可等效为独立BSC信道,整条通信链路等价于多个BSC信道串联模型。
主流信息论教材仅给出两级BSC串联简单例题,缺少任意m级信道通用数学推导,同时没有数值仿真曲线直观展示容量变化规律。本文完整完成两级推导、m级通用公式拓展,并通过编程可视化定量分析两大核心问题:
- 多级相同BSC串联后等效总误码如何计算?
- 信道容量随串联阶数、单段链路误码率存在怎样的衰减规律?
研究结论可直接用于多跳中继通信系统性能分析。
二、基础理论铺垫
2.1 单级BSC信道模型
BSC输入符号集合 X={0,1},输出 Y={0,1},单级误码概率为a:
发送0收到0、发送1收到1:正确传输,概率 1-a
发送0收到1、发送1收到0:传输错误,概率 a
单级BSC转移矩阵:
离散对称无记忆信道核心结论:输入等概分布 P(X=0)=P(X=1)=0.5 时,信道取得最大互信息,即信道容量。
单BSC信道容量公式:

H2(.) 为二元熵函数,单位:bit/符号。
2.2 DMC离散无记忆信道串联规则
若信道1输出作为信道2输入,两信道串联,总等效转移矩阵为两个信道转移矩阵依次相乘。
m个相同BSC串联时,总等效转移矩阵等于单级矩阵的m次幂 P^m。
三、两级BSC串联理论推导
设两段完全相同BSC,单级误码率均为 a,信道1转移矩阵 P,信道2转移矩阵同样为 P,两级串联总转移矩阵 P_2=P *P。
3.1 等效转移概率求解

3.2 两级串联信道容量
等效信道仍为对称BSC,等概输入达到容量,代入容量公式:

3.3 数值实例计算
取单级误码 a=0.1
等效两级误码:a2=20.10.9=0.18
单级容量:C_1=1-H2(0.1)≈0.531 bit
两级容量:C_2=1-H2(0.18)≈0.310 bit
直观可见:串联两级后信道容量明显下降。
四、m级BSC串联通用公式拓展(加分拓展内容)
4.1 m级等效总误码数学归纳推导
- 归纳基:m=1,a1=a;m=2,a2=2a(1-a),成立
- 归纳假设:m级等效误码 am
- m+1级为m级串联单级BSC,递推关系:
a{m+1}=2am(1-am)
可推导出闭式通项:

4.2 m级串联信道通用容量
m级串联后整体等效为BSC信道,等效误码为 am,信道容量:

4.3 容量变化规律定性分析
- 当串联阶数 m趋于无穷大,(1-2a)^m趋于0,am趋于0.5
- 二元熵 H2(0.5)=1,因此极限容量

物理含义:大量BSC信道级联,传输错误不断累积,输入输出几乎无相关性,信道无法承载有效信息。
五、Python仿真实现
5.1 完整代码
python
import numpy as np
import matplotlib.pyplot as plt
二元熵函数
def binary_entropy§:
p = np.clip(p, 1e-10, 1 - 1e-10) # 避免log2(0)报错
return -p * np.log2§ - (1 - p) * np.log2(1 - p)
m级BSC串联等效误码
def equiv_error(m, eps):
return (1 - (1 - 2 * eps) ** m) / 2
m级串联信道容量
def channel_capacity(m, eps):
em = equiv_error(m, eps)
return 1 - binary_entropy(em)
---------------------- 绘图1:固定误码a,容量随串联级数m变化 ----------------------
eps_fixed = 0.1
m_list = np.arange(1, 21) # 串联1~20级
cap_list = [channel_capacity(m, eps_fixed) for m in m_list]
plt.figure(figsize=(10,4))
plt.subplot(1,2,1)
plt.plot(m_list, cap_list, ‘o-’, color=‘#1f77b4’, linewidth=2)
plt.xlabel(“串联级数 m”)
plt.ylabel(“信道容量 C / bit”)
plt.title(f"单级误码a={eps_fixed},容量随串联级数变化")
plt.grid(alpha=0.3)
---------------------- 绘图2:固定级数m,容量随单级误码a变化 ----------------------
m_fixed = 3
eps_list = np.linspace(0, 0.5, 100)
cap_eps = [channel_capacity(m_fixed, e) for e in eps_list]
plt.subplot(1,2,2)
plt.plot(eps_list, cap_eps, ‘-’, color=‘#ff7f0e’, linewidth=2)
plt.xlabel(“单级BSC误码率 a”)
plt.ylabel(“信道容量 C / bit”)
plt.title(f"串联级数m={m_fixed},容量随单级误码变化")
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
5.2 代码说明与运行截图说明
-
函数 binary_entropy 实现二元熵计算,截断极小值防止对数无意义报错;
-
equiv_error 根据推导公式计算m级串联等效总误码;
-
左子图:固定单段误码0.1,遍历1~20级串联,观察容量衰减;

-
右子图:固定串联3级,误码0~0.5区间扫描,观察容量随误码下降趋势;

-
运行成功截图


六、仿真结果分析与工程解读 -
串联级数增长,信道容量单调递减,衰减速度前期快、后期逐渐平缓,无限多级后容量趋近于0;
-
单级链路误码率a越大,相同串联级数下整体容量越低,容量衰减幅度明显加剧;
-
工程实际启示:多跳中继通信系统中,单纯增加中继节点(等效BSC串联)会持续损耗信道传输上限。工程上需搭配信道编码、均衡算法、分集接收补偿误码累积,缓解容量下降问题;
-
等效误码物理本质:每一级信道独立引入随机比特翻转,多级叠加后发送与接收比特一致性持续降低。
七、拓展思考与踩坑总结
7.1 高频易错点
- 矩阵乘法顺序颠倒:信道串联矩阵不可交换,必须按信号传输顺序相乘;BSC对称模型数值结果巧合不受影响,非对称信道会直接算错等效误码。
- 混淆串、并联信道:并联多条BSC信道容量叠加提升;串联信道容量持续衰减,二者规律完全相反,不可混用。
- 熵函数计算边界:a取0或0.5时对数无定义,代码中必须增加极小值截断处理。
7.2 拓展延伸方向
本文全部基于相同误码率BSC串联,可进一步拓展:各级链路误码a₁,a₂…aₘ互不相等时,通过逐次矩阵相乘求解整体等效转移矩阵,推导非均匀级联信道容量。
八、完整总结
本文以二进制对称信道BSC为基础模型,完成两级串联完整矩阵推导,利用数学归纳法得到任意m级BSC串联等效误码闭式表达式,推导出多级串联信道容量通用计算公式。
通过Python数值仿真绘制两组特性曲线,定量验证核心规律:串联级数越多、单级链路误码越大,信道传输容量越低,无限级联后信道丧失信息传输能力。结合多跳中继通信场景解释理论结论工程价值,同时梳理推导与仿真过程中常见计算错误,拓展非均匀链路级联研究思路,完整覆盖理论推导、数值实例、编程仿真、工程分析四大模块。
更多推荐
所有评论(0)