没有合适的资源?快使用搜索试试~ 我知道了~
首页matlab实现汉明编码
资源详情
资源评论
资源推荐

MATLAB 实现汉明码编码译码
汉明码的编码就是如何根据信息位数 k,求出纠正一个错误的监督矩阵 H,然后根据 H 求出信息
位所对应的码字。
1、根据已知的信息位数 k,从汉明不等式中求出校验位数 m=n-k ;
2、在每个码字 C: (C1,C2,? ,C2m -1) 中,用 c02 ,c12 ,cn-12 作为监督位,剩下的位作为
信息位;
3)用二进制数字表示 2m-1 列,得到 2m-1 列和 m 行监督矩阵 H; 4)用 3 步的 H 形成 HCT =0 ,
从而得出 m 个监督方程;
5)将已知的信息代入方程组,然后求出满足上述方程组的监督位 c (i=0 ,1,? ,m 一 1)。
例如,用以上方法,很容易求出 [7, 4,3] 汉明码的监督矩阵:
及编码所对应的码字为 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) % 对伴随式除 2 取余数
newmsg=decode(code,n,k,'hamming/binary') % 解码
d_min=min(sum((code(2:2^k,:))')) % 最小码距
运行结果:
>> hangming
code =
1 0 1 0 0 0 1
1 0 1 0 0 0 1
1 0 1 0 0 0 1
0 1 0 0 0 1 1
0 1 0 0 0 1 1
1 1 0 0 1 0 1
1 0 0 0 1 1 0
0 0 1 0 1 1 1
1011001
1101010
1110100
H

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0