北京化工大学信息编码实验程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clear all;
disp(' 线性分组码编码过程: ');
G0=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];
P=[1,1,1;1,1,0;1,0,1;0,1,1];
G=[G0,P];
I=input('请输入n*4的信息码组:');
C1=I*G;
C=mod(C1,2);
fprintf('输出的编码为:C=');
disp(C);
%已知生成矩阵G,可以求出校验矩阵H。
clear all;
disp(' 线性分组码的译码过程: ');
E=[0 0 0 0 0 0 0;0 0 0 0 0 0 1;0 0 0 0 0 1 0;0 0 0 0 1 0 0;
0 0 0 1 0 0 0;0 0 1 0 0 0 0;0 1 0 0 0 0 0;1 0 0 0 0 0 0];
disp('差错图样E为:');
disp(E);
P=[1,1,1;1,1,0;1,0,1;0,1,1];
H0=[1,0,0;0,1,0;0,0,1];
H1=P';
H=[H1,H0];%校验矩阵
S0=E*(H');%校验子与差错图案E的对应关系
disp('与差错图样E对应的校验子S0:');
disp(S0);%可根据S0来判断是否出错
R=input('请输入接收到的码组:'); %接收到的码字
[a,b]=size(R); %返回数组R的维
S1=R*(H'); %S为校阵子;
S=mod(S1,2);
disp('得到接收码字的校验子S:');
disp(S);
for j=1:1:8
N(j,1)=S0(j,1).*4+S0(j,2).*2+S0(j,3);
end
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 N(1,1)
A(i,:)=R(i,:)+E(1,:);
case N(2,1)
A(i,:)=R(i,:)+E(2,:);
case N(3,1)
A(i,:)=R(i,:)+E(3,:);
case N(4,1)
A(i,:)=R(i,:)+E(4,:);
case N(5,1)
A(i,:)=R(i,:)+E(5,:);
case N(6,1)
A(i,:)=R(i,:)+E(6,:);
case N(7,1)
A(i,:)=R(i,:)+E(7,:);
case N(8,1)
A(i,:)=R(i,:)+E(8,:);
end
end
A=rem(A,2); %求出正确的编码
disp('检纠错后的码组A=');
disp(A); %显示正确的编码
x=1;
while x<=4 %提取信息位
T(:,x)=A(:,x);
x=x+1;
end
disp('译出的信息序列T=');
disp(T); %显示原信息码