二元HammingCode的Matlab实现(转贴)
function =jghostyhammingcode(f,r)%---------HammingCode 译码---------------------------
%---------HammingCode By jghosty 2006-11-29----------
%f为输入二元码,码长n=2^r-1,index为标志符,H是校验矩阵,s为最终输出码
lf=length(f);
hamlength=2^r-1;
%判断码长是否符合
if lf<hamlength
index='输入错误!'
return;
end
for i=1:15
x(i)=i;
end
h=ones(1,hamlength);
for i=1:hamlength
h(i)=i;
end
%生成校验矩阵
H1=dec2bin(h);
H=H1';
S=mod(f*(H1),2);
%判断码字是否正确
if mod(S,2)==0
index='无错误';
s=f;
return;
else
index='译码出错,纠错处理';
K=ones(r,1);
for j=1:hamlength
for l=1:r
K(l)=H1(j,l);
end
G=mod(S*K,2);
if G~=0;
break;
end
end
s=mod((f+),2);
end
页:
[1]