线性分组码 您所在的位置:网站首页 crc码的编解码实验报告 线性分组码

线性分组码

2024-07-15 16:00| 来源: 网络整理| 查看: 265

(7,4)汉明码解码步骤:

构建校验矩阵计算伴随式若由伴随式的结果纠正错误取出信息位

三、实现(7,4)汉明码编解码的Matlab源程序;实现(7,4)汉明码最小码距计算方法的Matlab源程序。

汉明码编码解码及计算最小码距程序(exp3_code.m)

clear;

clc;

G=[1 0 0 0 1 0 1;

   0 1 0 0 1 1 1;

   0 0 1 0 1 1 0;

   0 0 0 1 0 1 1];

H=[1 1 1 0 1 0 0;

   0 1 1 1 0 1 0;

   1 1 0 1 0 0 1];

M=input('请输入4位二进制信息序列:');

C=M*G;

C=mod(C,2);

fprintf('汉明编码为%d %d %d %d %d %d %d\n',C);

S=H*C';

S=mod(S,2);

T=any(S);  

if T==0

    fprintf('传输没有出现错误\n');

    fprintf('信息序列为:%d %d %d %d\n',C(1),C(2),C(3),C(4));

 

else

    fprintf('传输出现错误\n');

    error=C;

    fprintf('接受到的信息序列为:%d %d %d %d\n',error(1),error(2),error(3),error(4));

    fprintf('正在自动修正一位错误...\n');

        for i=1:7

            if S==H(:,i)       

                C(i)=~C(i);

            end

        end

    fprintf('修正后正确的信息序列可能为:%d %d %d %d\n',C(1),C(2),C(3),C(4));

    fprintf('再次检查错误...\n');

    S=H*C';

    S=mod(S,2);

    T=any(S);              

    if T==0

        fprintf('已修正错误\n');

        fprintf('信息序列可能为:%d %d %d %d\n',C(1),C(2),C(3),C(4));

    else

        fprintf('错误超过1位,无法修正错误\n')

        fprintf('接受到的错误序列:%d %d %d %d\n',error(1),error(2),error(3),error(4));

    end

end

M_all=[0 0 0 0;

       0 0 0 1;

       0 0 1 0;

       0 0 1 1;

       0 1 0 0;

       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];

C_all=zeros(16,7);

d=7;

for i=1:16

    C_all(i,:)=M_all(i,:)*G;

    C_all(i,:)=mod(C_all(i,:),2);

    di=sum(C_all(i,:));

    if(di>0&&di



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有