背景知識
漢明碼是線性分組碼的一種
下面的代碼就是漢明碼題目出題和解題的全部思路
代碼
%使用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實現》