哈夫曼编码及Matlab实现.pdfVIP

  • 22
  • 0
  • 约2.85千字
  • 约 3页
  • 2020-08-15 发布于广东
  • 举报
哈夫曼编码及Matlab 实现 哈夫曼编码是一种所得码字是异前置的变长码,其平均码长最短,被称为最 佳变长码,也称为哈夫曼编码。 其具体编码方法如下: (1)将信源信息(符号)按概率大小排队; (2 )从最小概率的两个消息开始编码,并给予一定的编码规则,如小概率 的下支路编为1 (或0 ),大概率的上支路变为0 (或1),若两者概率相等,仍是 下支路为1 上支路为0 ; (3 )将已经编码的两个消息对应概率合并,并重新按概率大小排队,重复 步骤(2 ); (4 )重复步骤(3 ),直至合并概率归一为止; (5 )变成的变长码是按后出先编方式,即从概率归一的树根沿编码路线逆 行至对应的消息。 实验内容: 给定离散信源: U u u u u u u u    1 2 3 4 5 6 7      p 0.20 0.19 0.18 0.17 0.15 0.10 0.01     对其进行哈夫曼编码,其理论结果如下: 消息 概率 编码 (U ) (p) (C ) u 0.20 0.20 0.26 0.35 0.39 0.61 1.0 10 1 u 0.19 0.19 0.20 0.26 0.35 0.39 11 2 u 0.18 0.18 0.19 0.20 0.26 000 3 u 0.17 0.17 0.18 0.19 001 4 u 0.15 0.15 0.17 010 5 u 0.10 0.11 0110 6 u 0.01 0111 7 1 哈夫曼编码Matlab代码: p=[0.2,0.19,0.18,0.17,0.15,0.1,0.01]; p=sort(p,descend);% 降序排列 H=sum(-p.*log2(p));%求得信息熵 n=length(p);%离散信源长度 q=p; m=zeros(n-1,n); for i=1:n-1%对第一行进行编码 [q,l]=sort(q); m(i,:)=[l(1:n-i+1),zeros(1,i-1)]; q=[q(1)+q(2),q(3:n),1]; end for i=1:n-1 c(i,:)=blanks(n*n); end c(n-1,n)=1; c(n-1,

文档评论(0)

1亿VIP精品文档

相关文档