- 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,
您可能关注的文档
最近下载
- 2026年菏泽医学专科学校单招综合素质笔试备考题库及答案解析.docx VIP
- 2026年菏泽医学专科学校单招综合素质考试备考题库附答案详解.docx VIP
- 2025年上海期货交易所招聘笔试模拟题及答案.doc VIP
- 人教版六年级下册英语全册教案及反思.doc
- 2025至2030中国预拌混凝土行业细分市场及应用领域与趋势展望研究报告.docx VIP
- 数字信号处理-理论、算法与实现(第三版)胡广书习题解答.docx
- 《技术经济学概论》(第四版) 虞晓芬 第02章 技术创新.ppt VIP
- 优瑞咖啡机说明书优瑞咖啡机说明书.pdf VIP
- 2026年菏泽医学专科学校单招综合素质考试题库及答案解析.docx VIP
- 中西诗在情趣上的比较_朱光潜.pdf VIP
原创力文档

文档评论(0)