当前位置 博文首页 > 仇天朔 廊坊师范学院信息技术提高班 十七期:基于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);