编码内容包括:用matlab实现霍夫曼编码,并且求出相应的信源熵,平均码长,和编码效率。
以下是代码:
%霍夫曼编码
%huffman_code
%编码思路:根据位置矩阵的变化过程反推生成霍夫曼编码
n=input('请输入编码个数:\n');
c=[];
% for i=1:n
% fprintf('请输入第%d个编码:\n',i);
% c(i)=input('');
% end
c=rand(1,n);%********随机生成数据********************
c=c/sum(c);
p=c;
disp(p);
w=[;];%***************位置矩阵,记录数据的变化过程*****
for i=1:n-1
[p,l]=sort(p);
w(i,:)=[l(1:n-i+1),zeros(1,i-1)];
p=[p(1)+p(2),p(3:n),1];
end
a={;};%**********字符数组,生成霍夫曼码****************
for i=1;2*(n-1)
for j=1:n
a{i,j}=' ';
end
end%*****************初始化*********************
a{2*n-2,1}='0';
a{2*n-2,2}='1';
for i=1:n-1
for j=1:i+1
a{2*(n-i)-1,j}=a{2*(n-i),find(w(n-i,:)==j)};
end
if((n-i-1)<=0)
&n