基于EXIT图的非二进制LDPC码设计工具
项目介绍
本工具是一个专门用于设计与分析非二进制(Non-Binary)LDPC码的实验平台。它基于互信息转移(EXIT)图理论,实现了ISIT 2005论文中提出的“EXIT Method no. 2”核心算法。该工具主要解决在伽罗华域(GF)上,如何通过优化变量节点度分布来提升LDPC码在迭代译码下的性能,通过曲线匹配技术寻找特定信噪比下的最优门限。
功能特性
- 任意伽罗华域支持:工具支持针对GF(q)阶数的非二进制编码分析,能够处理高阶调制下的互信息传递特性。
- 度分布自动化优化:通过线性规划(Linear Programming)算法,在满足目标码率的前提下,自动寻找最优的变量节点度分布组合。
- 收敛门限搜索:在给定的信噪比(SNR)范围内,精确确定LDPC码在无限码长假设下的迭代展开门限。
- 动态译码轨迹仿真:不仅能够绘制EXIT曲线,还能通过数值内插模拟实际译码过程中的信息演进轨迹,直观展示译码是否收敛至零误差轨迹。
- 灵活的参数配置:支持自定义目标码率、变量节点最大度数以及校验节点度数。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 工具箱需求:需要安装优化工具箱(Optimization Toolbox),以支持linprog线性规划函数。
实现逻辑说明
程序的执行流程严格遵循EXIT图的设计原则,共分为四个主要阶段:
- 预计算阶段:
由于非二进制域下的J函数(互信息与信噪比标准差之间的映射)不具备解析式,程序基于高斯近似和经验公式拟合,预先构建了针对GF(q)域的J函数表。这一过程考虑了域阶数对信息量的影响,并将互信息量化为[0, 1]区间内的值。
- 搜索与优化阶段:
程序在给定的信噪比范围内进行步进式搜索。对于每一个信噪比点:
- 首先计算当前信道提供的初始互信息。
- 根据固定的校验节点(CND)度数,计算CND的输出互信息转移函数。
- 构建线性规划模型。该模型的目标是在保证变量节点(VND)曲线始终位于校验节点曲线之上的约束下(即确保译码隧道开启),寻找满足码率方程的一组变量节点度分布。
- 码率约束被通过等式约束转化为变量节点度数的加权倒数和。
- 结果验证阶段:
当线性规划找到可行解时,记录当前的度分布系数和信噪比。系统会逐步降低信噪比,直到找到线性规划无解的临界点,该点即为所求的收敛门限。
- 可视化输出阶段:
程序自动生成EXIT分析图表,横坐标代表校验节点输出的互信息,纵坐标代表变量节点输出的互信息。通过绘制两条转移曲线的交叠情况以及模拟迭代步进轨迹,验证设计的有效性。
关键算法与实现细节分析
实现中采用了基于插值的J_q与J_q_inv函数。针对非二进制信道,使用了特定的指数拟合公式来修正经典高斯近似,使其能够适配伽罗华域的统计特性。
变量节点的互信息输出由信道初始信息和来自校验节点的信息共同决定。程序利用组合求和的方法,根据当前的度分布比例,计算平均的变量节点输出互信息。
校验节点的计算遵循非二进制LDPC的互信息特性,即输出互信息满足 1 - J((dc-1) * J^-1(1 - Iv)) 的关系。
为了确保译码能够收敛,程序在约束条件中引入了一个微小的间隙(Gap),确保VND曲线与CND曲线之间存在足够的空间供译码轨迹通过。
通过在两条EXIT曲线之间进行循环内插寻址,模拟了从信道接收初始值开始,在变量节点与校验节点之间反复反复投射的过程,直到互信息接近1(代表完全译码)或陷入死循环。