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