欢迎访问yhm138的博客园博客, 你可以通过 [RSS] 的方式持续关注博客更新

MyAvatar

yhm138

HelloWorld!

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实现》

posted @ 2021-02-28 19:06  yhm138  阅读(4072)  评论(0编辑  收藏  举报