当前位置 博文首页 > 仇天朔 廊坊师范学院信息技术提高班 十七期:基于MATLAB的线性分

    仇天朔 廊坊师范学院信息技术提高班 十七期:基于MATLAB的线性分

    作者:[db:作者] 时间:2021-06-29 21:15

    基于matlab的线性分组码的编码译码程序

    一、实验目的

    1.熟悉线性分组码的编码译码原理
    2.掌握编写线性分组码的编码译码程序的要点
    3.掌握使用matlab的仿真要点

    二、实验内容

    1.完成对任意信息序列的编码
    2.根据生成矩阵,形成监督矩阵
    3.根据得到的监督矩阵,得到伴随式,并根据它进行译码
    4.验证工作的正确性

    三、实验代码

    G=[1 0 0 1 0 1;
       0 1 0 1 1 0;
       0 0 1 0 1 1]
    H=gen2par(G)
    disp('监督矩阵为:H=');
    disp(H);
    I=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
    C=rem(I*G,2);
    disp('所得许用码组结果为:C=');
    disp(C)
    %译码并判别
    clear all;
    close all;
    G=[1 0 0 1 0 1;
       0 1 0 1 1 0;
       0 0 1 0 1 1];
    R=input('请输入接收到的码组R:');
    [a,b]=size(R)
    E=[0 0 0 0 0 0;1 0 0 0 0 0;
       0 1 0 0 0 0;0 0 1 0 0 0;
       0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1];
    H=gen2par(G);
    S=rem(R*H',2);
    disp('所得伴随式为:S=');
    disp(S);
    i=1;
    for i=1:1:a
        M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3);
    end
    for i=1:1:a
        switch(M(i,1))
            case 0
                A(i,:)=R(i,:)+E(1,:);
            case 5
                A(i,:)=R(i,:)+E(2,:);
            case 6
                A(i,:)=R(i,:)+E(3,:);
            case 3
                A(i,:)=R(i,:)+E(4,:);
            case 4
                A(i,:)=R(i,:)+E(5,:);
            case 2
                A(i,:)=R(i,:)+E(6,:);
            case 1
                A(i,:)=R(i,:)+E(7,:);
        end
    end
    for i=1:1:a
        switch(M(i,1))
            case 0
                disp('没有出现错误!');
            case 1
                disp('注意:第1位出现一个错误!请纠正!');
            case 2
                disp('注意:第2位出现一个错误!请纠正!');
            case 4
                disp('注意:第3位出现一个错误!请纠正!');
            case 3
                disp('注意:第4位出现一个错误!请纠正!');
            case 6
                disp('注意:第5位出现一个错误!请纠正!');
            case 5
                disp('注意:第6位出现一个错误!请纠正!');
        end
    end
    A=rem(A,2);
    disp('检纠错后的码组A=');
    disp(A);
    j=1;
    while j<=3
        I(:,j)=A(:,j);
        j=j+1;
    end
    disp('译出的信息序列I=');
    disp(I);
    

    四、实验结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述