基于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);