编码:已知给定的生成矩阵G和信息组m,求校验矩阵和译码矩阵。
译码:已知给定的接收序列R,求差错图样和译码序列。
代码:
clear %编码 G=input('请输入生成矩阵G\n G='); [k,n]=size(G); r=n-k; m=input('请输入需传送信息m\n m='); l=length(m); if (mod(l, k)) disp('输入的信息有误'); else g=l/k; %将输入序列转化成矩阵m t1=[]; for i=1:g t1(i,:)=m(k*(i-1)+1:i*k) ; end m=t1; %求校验矩阵H c=mod(m*G, 2); A=G(:,k+1:n); H=[A',eye(r)]; disp('校验矩阵');H disp('译码矩阵' );c end disp('敲回车键继续'); pause %解码 y= input('输入接收序列y\n y='); t2=[]; for i=1:g t2(i,:)=y(1,n*(i-1)+1:i*n); end y=t2 s=mod(y*H',2) ; e=s*pinv(H'); for i=1:g for j=1:n if(e(i,j)>0.5-eps) e(i,j)=1; else e(i,j)=0; end end end c1=mod(y+e,2); disp('差错图样'); e disp('译码序列'); c1
编码:
若给定生成矩阵G为[1 0 0 1 1 1 0;0 1 0 0 1 1 1;0 0 1 1 1 0 1],m=[0 1 0],
根据和可求得校验矩阵和译码矩阵。
译码:
若给定接收序列y为[1 1 0 0 1 1 1],先由接收码字R计算伴随式,在简化译码表中查出对应错误图样E,再计算,输出C为译出的码字。
根据提示输入响应的矩阵,得到如下结果:
读者还可以输入其他矩阵加以验证。