Flexible Construction of Girth-Six QC-LDPC Codes
项目介绍
本项目致力于实现一种灵活的准循环低密度奇偶校验(QC-LDPC)码构造系统。该系统的核心在于通过代数约束与启发式搜索相结合的方法,生成围长(Girth)至少为6的校验矩阵。围长是LDPC码结构性能的重要指标,消除长度为4的短环能显著提升信念传播(BP)译码算法的收敛稳定性并降低误码平层。系统支持参数化配置,能够快速构建适应不同信道条件的纠错码,并提供从矩阵构造、围长验证到链路性能仿真的完整闭环工具链。
功能特性
- 参数化构造:支持用户自定义基础矩阵维度(mb, nb)和扩张因子(z),灵活调整码率与码长。
- 围长优化约束:内置代数判别准则,在构造过程中实时检测并消除4环。
- 自动化生成矩阵:通过GF(2)域下的高斯消元法,将非规则检查矩阵转化为系统码形式的生成矩阵。
- 完整仿真链路:集成了BPSK调制、AWGN信道模拟以及高性能对数域和积算法(Log-SPA)译码器。
- 可视化分析:自动生成校验矩阵的稀疏结构图(Spy Plot)以及误码率(BER)与误帧率(FER)性能曲线。
系统要求
- 环境需求:MATLAB R2016b 及以上版本。
- 依赖模块:无需外部工具箱,核心逻辑基于MATLAB基础函数及矩阵运算实现。
实现逻辑说明
1. 参数与基础矩阵配置
系统首先初始化基础矩阵的大小(如4x8)和扩张因子(如32)。根据这些参数计算设计码率,并设置仿真参数(SNR范围、最大帧数及错误停止阈值)。
2. 基于代数约束的移位矩阵构造
构造逻辑的核心在于填充移位矩阵 P。系统遍历 P 的每一个元素,尝试分配一个在 [0, z-1] 之间的循环移位值。
- 代数判定:对于每一个候选移位值,程序会检查其与已定义位置是否满足公式
(P(i,j) - P(i,y) + P(x,y) - P(x,j)) mod z == 0。若该式成立,则意味着对应的 H 矩阵中存在长度为4的环。 - 贪婪搜索:通过随机化候选值(randperm)引入灵活性,若当前位置找不到满足围长条件的候选值,系统将采取退化策略分配随机值,确保程序的鲁棒性。
3. 全局校验矩阵 H 的生成
利用生成的移位矩阵 P,系统将每个非负元素替换为一个 z×z 的置换矩阵(Identity Matrix 的循环移位版本),最终拼接形成一个 M×N 的稀疏校验矩阵。
4. 围长属性验证
在矩阵构造完成后,系统执行显式的围长检测算法。该算法通过双重循环统计任意两列之间是否存在重复的非零元素行索引(Shared Rows)。如果任意两列在不同行上有两个及以上的重叠点,则判定检测到4环。
5. 编码与生成矩阵转化
为了实现信息位的编码,系统利用 GF(2) 域下的高斯消元逻辑对校验矩阵进行化简,将其转化为
[I | P] 形式。通过提取校验部分并进行转置,构建出满足
G*H' = 0 条件的生成矩阵。
6. 通信链路仿真
- 信号处理:生成随机比特流,经过生成矩阵编码后,进行 BPSK 调制映射(0映射为1,1映射为-1)。
- 信道模型:根据指定的 Eb/No 计算噪声方差,为信号叠加高斯白噪声。
- 接收端处理:计算对数似然比(LLR)作为译码器的软信息输入。
关键算法与函数分析
对数域和积算法译码器(Log-SPA Decoder)
译码器实现了高性能的对数域 SPA 算法,主要步骤包括:
- 初始化:将输入 LLR 分配给变量节点到校验节点的消息矩阵。
- 校验节点更新(横向步骤):使用
phi(x) = -log(tanh(x/2)) 函数进行非线性变换。考虑到数值稳定性,对极小值进行了限幅处理。通过计算校验和的符号乘积与 phi 值累加,实现节点间的置信度传递。 - 变量节点更新(纵向步骤):将来自校验节点的反馈消息与初始信道 LLR 求和,更新边缘消息。
- 判决与停止:进行硬判决并校验
H*x' == 0 条件,若满足或达到最大迭代次数则退出。
有限域高斯消元(rref_gf2)
该逻辑专门针对 GF(2) 域设计,在消元过程中使用模2加法代替算术减法。它能够将稠密的校验矩阵转化为简化行阶梯形式,从而分离出系统位的基向量,为构造生成矩阵提供数学基础。
性能评估与可视化
- 结果统计:仿真过程中实时计算每一帧的误比特数和误帧数,并在 SNR 循环结束后计算平均概率。
- 绘图逻辑:左侧展示校验矩阵的非零元素分布,揭示 QC-LDPC 的块状循环特性;右侧以对数坐标展示 BER/FER 曲线,通过直观的瀑布图形式展现构造代码的纠错能力。
使用方法
- 打开 MATLAB 软件。
- 将项目相关的脚本文件置于当前工作路径。
- 运行主程序脚本。
- 控制台将实时输出围长验证结果以及不同信噪比下的仿真进度。
- 运行结束后,系统将自动弹出性能可视化窗口。