(5,2)线性分组码标准阵列译码原理与Python仿真实现【P124302018-王开源,P124302045-张俊豪,P124302003-李则翰,P124302048-张子璇】
(5,2)线性分组码标准阵列译码原理与Python仿真实现
一、调研摘要
本次调研选取曹雪虹《信息论与编码(第4版)》中(5,2)系统线性分组码作为研究对象,深入推导线性分组码生成矩阵、监督矩阵构造过程,剖析标准阵列译码表构建原理,完成伴随式计算、错误图样识别、码字译码全流程Python仿真,对比查表译码与伴随式译码两种方式的一致性,验证线性分组码纠错能力。
二、知识点原理推导
2.1 (5,2)线性分组码基础参数
码长n=5,信息位长度k=2,监督位r=n-k=3;
许用码字总数2^k=4,陪集总数2^r=8;
给定系统生成矩阵:
G=[[1,0,1,1,1],[0,1,1,0,1]]
系统形式G=[Ik P],I2为2阶单位阵,校验矩阵部分:
P=[[1,1,1],[1,0,1]]
2.2 监督矩阵H推导
系统码监督矩阵满足H=[P的转置 Ir]:
P的转置=[[1,1],[1,0],[1,1]]
H=[[1,1,1,0,0],[1,0,0,1,0],[1,1,0,0,1]]
2.3 全部许用码字计算
码字C=mG模2运算,信息组m取值:(00)、(01)、(10)、(11):
1. m=(00),C0=00000
2. m=(01),C1=01101
3. m=(10),C2=10111
4. m=(11),C3=11010
2.4 标准阵列译码表构造原理
标准阵列将全部2^5=32个5位二进制矢量划分为8个陪集:
1. 第一行:全部4个许用码字,陪集首E0=(00000),伴随式S0=(000);
2. 其余7行:选取重量最小矢量作为陪集首(优先单比特错误图样),依次为E1~E7,对应唯一伴随式S1~S7;
3. 每行元素:Ri=Ej+Ct模2相加,代表信道出错后所有可能的接收码组。
2.5 伴随式译码核心公式
接收码R=C+E(模2加,E为错误图样)
伴随式:S=RH的转置=(C+E)H的转置=CH的转置+EH的转置=EH的转置
合法码字CH的转置=0,因此伴随式仅由错误图样决定;
通过S查找对应陪集首E帽,译码估值:C帽=R+E帽模2运算。
三、标准阵列完整表格
陪集首(错误图样E) 伴随式S 该行所有接收码组
00000 000 00000,01101,10111,11010
10000 111 10000,11101,00111,01010
01000 101 01000,00101,11111,10010
00100 100 00100,01001,10011,11110
00010 010 00010,01111,10101,11000
00001 001 00001,01100,10110,11011
00011 011 00011,01110,10100,11001
00110 110 00110,01011,10001,11100
四、仿真代码运行结果
仿真代码和结果
全部许用码字:
信息组(0, 0) -> 码字[0 0 0 0 0]
信息组(0, 1) -> 码字[0 1 1 0 1]
信息组(1, 0) -> 码字[1 0 1 1 1]
信息组(1, 1) -> 码字[1 1 0 1 0]
接收码 R = [1 0 1 0 1]
伴随式 S = [0 1 0]
估计错误图样 E_hat = [0 0 0 1 0]
译码输出码字 C_hat = [1 0 1 1 1]
五、结果分析与总结
1. 纠错能力分析:该(5,2)码最小汉明距离dmin=3,可纠正1位随机错误,无法纠正2位及以上错误,这也是标准阵列中部分双错图样无法唯一判决的原因;
2. 两种译码方式对比
- 标准阵列查表法:直观,适合理解原理,但码长增加后表格规模指数增长,无法工程实现;
- 伴随式译码法:仅需计算伴随式、查找错误图样,计算量小,是工程上线性分组码主流译码方式;
3. 线性分组码核心特点:线性结构使得伴随式仅和错误有关,与发送码字无关,大幅简化译码运算。
六、结语
本次围绕教材经典(5,2)码完成原理推导与代码仿真,完整掌握了系统线性分组码构造、标准阵列构建、伴随式译码全过程。通过Python仿真复现了教材例题全部步骤,验证了理论推导正确性,理解了线性纠错码在数字通信差错控制中的工作机制。
