7-4线性分组码的matlab程序

补充一点,关于生成矩阵G和校验矩阵H的关系:生成矩阵G是4*7矩阵,分为两块,前4列组成的4*4矩阵为单位矩阵,后3列组成的4*3矩阵我称它监督矩阵,校验矩阵是3*7矩阵,前4列组成的3*4矩阵是监督矩阵的转置得到的,后面三列组成的3*3矩阵是单位矩阵。

%设本组(7,4)线性分组码信息位和检验位的约束关系为:

%c5=c1+c2+c3;c6=c2+c3+c4;c7=c1+c2+c4

%由约束关系可以写出生成矩阵G.

clear all;

G1=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];

G2=[1,0,1;1,1,1;1,1,0;0,1,1];

G=[G1,G2];

C=[1,0,1,1];  %C=[c1,c2,c3,c4]要进行编码信息码字 

R1=C*G;

R=mod(R1,2);

fprintf('输出的编码为:R=')

disp(R);

 

 

 

%已知生成矩阵G,可以求出校验矩阵H

clear all;

E=[1,1,1,1,1,1,1];

H1=[1,1,1,0;0,1,1,1;1,1,0,1];

H2=[1,0,0;0,1,0;0,0,1];

H=[H1,H2];%校验矩阵。

R=[1,0,1,1,0,0,1];%接收到的码字。

S1=R*(H'); %S为校阵子;

S=mod(S1,2);

 

 

for i=1:7; %用改for循环取出H中每一列,然后与S相加。

 T=H(:,[i]);

 %disp(T);

 B1=S+T';

 B=mod(B1,2);

 

    if (all(B(:)==0)); %如果SH的第i列之和B0矩阵,则表示R中第i个码字有误。

      fprintf('R中序列中错误码位是第:');

      disp(i) 

    else

     E(1,i)=0;

     

    end;

   

 

end;

C=mod((R+E),2);

fprintf('纠错后的码字应该为:C=');

disp(C);

原文地址:https://www.cnblogs.com/lianjiehere/p/4195039.html