汉明码的解码一例,含四位校验码,matlab

clear all
a=[1,0,1,1,0,1,0,1,1,1,0];
k=4
n=length(a(😃); %求输入数组长度
h=zeros(1,n-k); %解码和译码的n含义不同
check=zeros(1,k); %四个组的验证数组
che=0;
if k4
if a(1)~=rem(a(3)+a(5)+a(7)+a(9)+a(11),2); %四个组,如果有任意一个组验证不通过,则相应数组的变量变为1,标志位che变成1,方便后面修改
check(1)=1
che=1
else if a(2)~=rem(a(3)+a(6)+a(7)+a(10)+a(11),2);
check(2)=1
che=1;
else if a(4)~=rem(a(5)+a(6)+a(7),2);
check(4)=1
che=1;
else if a(8)~=rem(a(9)+a(10)+a(11),2);
check(8)=1
che=1;
end
end
end
end
end
j=1;
z=1;
if che
1 %假如验证生效
s= 2(3*check(1))+2(2*check(2))+2(1*check(3))+2(check(4)*0)
a(s)=1-a(s)
end

for i=1:n           %跳过验证码,将数组写入输出数组
    if i==2^(z-1)
        z=z+1;
        continue
    else 
        h(j)=a(i);
        j=j+1;
    end
end

end

在这里插入图片描述
h时最后得到的解码结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值