A=[1 1 0 1 1 0 0
][r,l]=size(A)
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];
%%%%%求校正子,然后将其转化成十进制数
for i=1:r
Sx=S(i,1)*4+S(i,2)*2+S(i,3);
end
%%%%下面是(7,4)码检错
for i=1:r
switch(Sx)
case 0 disp('此接收码字没错')
case 1 disp('注意:此接收码字的第一位有错,请纠正')
case 2 disp('注意:此接收码字的第二位有错,请纠正')
case 4 disp('注意:此接收码字的第三位有错,请纠正')
case 3 disp('注意:此接收码字的第四位有错,请纠正')
case 5 disp('注意:此接收码字的第五位有错,请纠正')
case 6 disp('注意:此接收码字的第六位有错,请纠正')
case 7 disp('注意:此接收码字的第七位有错,请纠正')
end
end
%%%下面为在知道哪位出错的情况下,进行纠正
for i=1:r
switch(Sx)
case 0 B(i,:)=A(i,:)+E(1,:);
case 1 B(i,:)=A(i,:)+E(2,:);
case 2 B(i,:)=A(i,:)+E(3,:);
case 4 B(i,:)=A(i,:)+E(4,:);
case 3 B(i,:)=A(i,:)+E(5,:);
case 5 B(i,:)=A(i,:)+E(6,:);
case 6 B(i,:)=A(i,:)+E(7,:);
case 7 B(i,:)=A(i,:)+E(8,:);
end
end
B=rem(B,2);disp('纠错后的码字');
disp(B);
这是(7,4)汉明码检错Sx=S(i,1)*4+S(i,2)*2+S(i,3),这句有问题,但是哪里有问题啊
程序改为如下:
S=ones(7,3);%要加的部分结果:
注意:此接收码字的第七位有错,请纠正
纠错后的码字
0 1 0 1 1 0 0