for j=1:i-1
c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*find(a(n-i+1,:)==j+1)); end end
fori=1:n
h(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n); ll(i)=length(find(abs(h(i,:))~=32)); end
Code_length=0; fori=1:n
Code_length=Code_length+p(1,i)*ll(i); end
Efficiency=h/(Code_length); fprintf('\\n 1t·ò?ü±à??:\\n'); disp(h)
fprintf('\\n ???ù??3¤:\\n'); disp(Code_length) fprintf('\\n 1t·ò?ü±à??D§?ê£o\\n'); disp(Efficiency)
close all;
clc;
G=input('??ê?è?éú2ú???óG,àyè?:G=[1 0 1 1 1;0 1 1 0 1]\\n G='); G;
[k,n]=size(G); r=n-k;
m=input('??ê?è?Dè′??í???¢m,è?m=[0 0 0 1 1 0 1 1]\\n m='); l=length(m); if(mod(l,k)) disp('ê?è????¢óD?ó'); else ge=l/k; temp1=[]; fori=1:ge
temp1(i,:)=m(k*(i-1)+1:i*k); end
m=temp1;
c=mod(m*G,2); A=G(:,k+1:n); H=[A',eye(r)]; disp('D£?é???ó'); H
disp('±à?????ó'); c end
disp('????3μ?ü?ìD?'); pause
y=input('ê?è??óê?DòáDy,è?:y=[0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0]\\n y='); temp2=[]; fori=1:ge
temp2(i,:)=y(1,n*(i-1)+1:i*n); end y=temp2
s=mod(y*H',2); e=s*pinv(H'); 22
fori=1:ge for j=1:n
if(e(i,j)>0.5-eps) e(i,j)=1; else
e(i,j)=0; end end
end
cc=mod(y+e,2); sc=cc(:,1:2); disp('2?′íí??ù'); e
disp('1à???μ'); cc
disp('ò???DòáD'); sc 三
四 哈夫曼编码
五算术编码