logo资料库

matlab实现汉明编码.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
MATLAB 实现汉明码编码译码 汉明码的编码就是如何根据信息位数 k ,求出纠正一个错误的监督矩阵 H ,然后根据 H 求出信息 位所对应的码字。 1、根据已知的信息位数 k,从汉明不等式中求出校验位数 2、在每个码字 C: (C1, C2 , ? , C2m -1) 中,用 c02 , c12 , cn-12 作为监督位,剩下的位作为 信息位; m=n-k ; 3)用二进制数字表示 2m-1 列,得到 2m-1 列和 m 行监督矩阵 H ; 4)用 3 步的 H 形成 HCT =0 , 从而得出 m 个监督方程; 5)将已知的信息代入方程组,然后求出满足上述方程组的监督位 例如,用以上方法,很容易求出 [7, 4,3] 汉明码的监督矩阵: c (i=0 , 1, ? , m 一 1)。 H 1110100 1101010 1011001 及编码所对应的码字为 C=011001 。 clear 给定 m=3 的汉明码 m=3; % [h,g,n,k]=hammgen(m); msg=[0 0 0 1;0 0 0 1;0 0 0 1;0 0 1 1;0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; code=encode(msg,n,k,'hamming/binary') % C=mod(code*h',2) % newmsg=decode(code,n,k,'hamming/binary') % 对伴随式除 2 取余数 d_min=min(sum((code(2:2^k,:))')) % 编码 解码 最小码距 运行结果: >> hangming code = 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1
C = 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 newmsg = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 d_min = 3 clear m=3; % [h,g,n,k]=hammgen(m); 给定 m=3 的汉明码 msg=[0 0 0 1;0 0 0 1;0 0 0 1;0 0 1 1;0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; code=encode(msg,n,k,'hamming/binary') % subplot(121) plot(code) C=mod(code*h',2) % 对伴随式除 2 取余数 newmsg=decode(code,n,k,'hamming/binary') % subplot(122) plot(newmsg) 编码 解码 d_min=min(sum((code(2:2^k,:))')) % 最小码距 运行结果: 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 0 0 5 10 15 20
分享到:
收藏