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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM