?? hamming7_4.m
字號:
n = 7; %碼長
k = 4; %信息位長
A = [ 1 1 1;1 1 0;1 0 1;0 1 1 ];
G = [ eye(k) A ]; %生成矩陣
H = [ A' eye(n-k) ]; %校驗矩陣
%編碼
msg = [ 1 1 1 1 ]; %信息比特
code = mod(msg*G,2); %進行編碼
%在信道傳輸中出現錯誤,任意取一個碼字發生錯誤,這里取第二個碼字發生錯誤
code(2)= ~code(2); %code(1)= ~code(1);code(3)= ~code(3);code(4)= ~code(4);
%code(5)= ~code(5);code(6)= ~code(6);code(7)= ~code(7);
recd = code; %接收信號
syndrome = mod(recd * H',2); %譯碼
%尋找錯誤碼字的位置
find = 0;
for ii = 1:n
if ~find
errvect = zeros(1,n);
errvect(ii) = 1;
search = mod(errvect * H',2);
if search == syndrome
find = 1;
index = ii; %index指示錯誤碼字位置
end
end
end
correctedcode = recd;
correctedcode(index) = mod(recd(index)+1,2); %糾正錯誤
msg_decoded=correctedcode;
msg_decoded=msg_decoded(1:4); %去除校驗碼
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -