基于BEC信道的喷泉码(LT码)BP译码仿真系统
项目介绍
本项目是一个专为研究LT码(Luby Transform Codes)设计的仿真平台,模拟了喷泉码在二进制删除信道(BEC)下的完整工作流程。通过该系统,用户可以观察LT码如何通过无速率编码特性应对信道丢包,并深入理解基于置信传播(Belief Propagation)算法的剥离译码过程。系统集成了从度分布生成、数据编码、信道干扰到迭代译码及其性能统计的闭环逻辑,是学习和研究容错编码技术的理想工具。
功能特性
- 动态度分布生成:实现了鲁棒孤子分布(RSD),这是LT码能够实现近容量性能的关键。
- BEC信道模拟:支持设置特定的丢包率,真实还原卫星通信或网络多播中的数据包丢失场景。
- 高效BP译码器:采用剥离译码(Peeling Decoder)逻辑,通过维护“波纹”缓冲区实现快速迭代恢复。
- 多维度性能评估:自动扫描不同冗余度(Overhead),统计译码成功率和误码率(BER)。
- 可视化分析:程序自动生成RSD分布柱状图以及性能随冗余度变化的对比曲线。
系统要求
- MATLAB R2016b 或更高版本。
- 需要安装 Statistics and Machine Learning Toolbox(用于执行
randsample 函数)。
使用方法
- 启动 MATLAB 并将当前目录切换至项目文件夹。
- 在命令行窗口直接输入主函数命令运行。
- 仿真开始后,控制台会实时显示当前冗余度下的成功率和误码率统计。
- 仿真完成后,系统将自动弹出两个图表:
- 上方图表显示生成的鲁棒孤子分布(RSD)概率曲线。
- 下方图表展示随冗余度增加,译码成功率与正确恢复比特率的上升趋势。
核心实现逻辑说明
#### 1. 参数初始化
系统预设源信息包 K=200,并设定 RSD 分布的控制参数 c 和 delta。信道丢包率设定为 0.1。仿真通过循环测试 1.0 到 1.6 倍的冗余度,以观察在不同数据量下的性能表现。
#### 2. 鲁棒孤子分布 (RSD) 生成
该功能实现了复杂的概率分布计算:
- 首先计算理想孤子分布(rho),其旨在使译码过程中度为 1 的包始终存在。
- 接着计算额外分量(tau),在特定的 K/S 处设置峰值,确保所有源信息包能被高概率覆盖。
- 最后通过归一化系数(beta)合成最终的度分布序列。
#### 3. LT 编码过程
编码器不限定产生的包数量。对于每一个编码包:
- 根据生成的 RSD 概率分布随机抽取一个度数 d。
- 从 K 个源包中随机、不重复地挑选 d 个索引。
- 将对应的源包数据进行连续异或(XOR)运算,生成编码包 payload,并记录其关联的索引集合。
#### 4. BEC 信道传输
系统根据预设的丢包率对生成的编码包序列进行筛选。未被丢弃的包及其对应的索引集合被送入译码器,这模拟了只有部分数据到达接收端的真实情况。
#### 5. 剥离译码算法 (Peeling Decoder)
译码采用置信传播(BP)的简化形式:
- 图结构构建:首先统计每个接收包的初始度数,并建立源包到编码包的反向索引表。
- 波纹触发:寻找所有接收到的度为 1 的编码包并放入“波纹”缓冲区。
- 迭代剥离:
- 从波纹中取出一个度为 1 的包,直接恢复其连接的源包数据。
- 遍历所有连接到该源包的其他编码包,利用异或操作消除该源包的影响(即剥离)。
- 剥离后,相关编码包的度数减 1。若某个包的度数恰好降为 1,则将其加入波纹。
- 终止条件:当波纹为空(无法继续解码)或所有源包均已恢复时,译码结束。
#### 6. 性能统计分析
系统通过多次重复实验(N_trials=50),计算每个冗余度下的:
- 译码成功率:只有当所有 K 个源包全部找回时,该次实验才计为成功。
- 平均误码率 (BER):统计未被恢复的比特占总比特数的比例。
最终通过绘图展示冗余度(Overhead)与恢复程度之间的强相关性:随着冗余度超过一定阈值,成功率会出现明显的阶跃提升。