MATLAB实现(7,4)汉明码的编码并完成纠错
背景知识
汉明码是线性分组码的一种
下面的代码就是汉明码题目出题和解题的全部思路
代码
%使用MATLAB实现(7,4)汉明码编码,并利用其完成纠错。
%其中单个随机错码可以位于7位码字的不同位置
%MATLAB不愧是矩阵实验室,开始这一套矩阵定义写的真的漂亮
n=7;%码长
k=4;%信息位长
A=[1 1 1; 1 1 0;1 0 1;0 1 1];
%A代表了监督关系,监督关系是
%code(5)=code(1)^code(2)^code(3)
%code(6)=code(1)^code(2)^code(4)
%code(7)=code(1)^code(3)^code(4)
G=[eye(k) A];%生成矩阵
H=[A' eye(n-k) ];%校验矩阵
%编码
msg=[1,1,1,1]; %信息bit
code=mod(msg*G , 2); %进行编码
%在信道传输中出现错误,任意取一个码字发生错误,这里取第2个码字发生错误
code(2)=~code(2);
recd=code;
syndrome=mod(recd*H' ,2);%译码
%寻找错误码字的位置
find=0;
for ii=1:1:n
if~find
errvect=zeros(1,n);
errvect(ii)=1;%让errvect遍历全部的独热码
search=mod(errvect *H',2);
if search ==syndrome
find =1;
index=ii;
end
end
end
%运行完后查看工作区,find的值是1,index的值是2,说明正确纠错
参考
《无线通信的MATLAB和FPGA实现》