线性分组码是通信原理中已经学到的一个概念,为了更好的编写代码,我又重新回顾了一次线性分组码的概念,网上的概念大多很乱,下面我进行一个梳理。
以(7,4)汉明码为例:
(7,4)汉明码的来历:在信息位后面增加监督码元,可以指示错误码元的位置。(7,4)汉明码信息位为4位,监督位为3位,监督位有2^3=8种组合。如果只错一位,则可用其中一种表示无错,其余7种表示错码可能的7个位置,见下表。
根据码元错误与校正子的关系可以列出监督方程,例如S1与a6 a5 a3 a2有关。
将监督方程变形,将校正位左移,可以得出生成矩阵。
错误图样是接收端为了指示错码的位置,它可与校正子对应S=EH^T。发送码为A,接收码为B,错误图样E=B-A。
根据以上,对编码解码的重要概念已经有了基本的了解,下面是MATLAB代码及其解析。
clc;clear
%编码过程
G=[1 0 1 1 1;0 1 1 0 1]%input('请输入生成矩阵G=')
[k,n]=size(G);%生成矩阵的行数是信息位数 列数是编码位数
r=n-k;
%判断传送信息的有效性
m=[0 0 0<