实验三 哈夫曼编码
更新时间:2024-04-25 08:54:01 阅读量: 综合文库 文档下载
- 实验三中推荐度:
- 相关推荐
实验一 离散信源及其信息测度
一、实验目的
1、理解信源编码的意义; 2、熟悉 MATLAB程序设计;
3、掌握哈夫曼编码的方法及计算机实现;
二、实验原理
通信的根本问题是如何将信源输出的信息在接收端的信宿精确或近似的复制出来。为了有效地复制信号,就通过对信源进行编码,使通信系统与信源的统计特性相匹配。
若接收端要求无失真地精确地复制信源输出的信息,这样的信源编码即为无失真编码。即使对于一个小的时间段内,连续信源输出的信息量也可以是无限大的,所以对其是无法实现无失真编码的;而离散信源输出的信息量却可以看成是有限的,所以只有离散信源才可能实现无失真编码。
凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。
变字长编码的最佳编码定理:在变字长码中,对于概率大的信息符号编以短字长的码;对于概率小的信息符号编以长字长的码。如果码字长度严格按照符号概率的大小顺序排列,则平均码字长度一定小于俺任何顺序排列方式得到的码字长度。
哈夫曼编码就是利用了这个定理,讲等长分组的信源符号,根据其概率分布采用不等长编码。概率大的分组,使用短的码字编码;概率小的分组,使用长的码字编码。哈夫曼编码把信源按概率大小顺序排列,并设法按逆次序分配码字的长度。在分配码字的长度时,首先将出现概率最小的两个符号相加,合成一个概率;第二步把这个合成的概率看成是一个新组合符号的概率,重复上述做法,直到最后只剩下两个符号的概率为止。完成以上概率相加顺序排列后,再反过来逐步向前进行编码。每一步有两个分支,各赋予一个二进制码,可以对概率大的编为0码,概率小的编为1码。反之亦然。
哈夫曼编码的具体步骤归纳如下:
1. 统计n个信源消息符号,得到n个不同概率的信息符号。 2. 将这n个信源信息符号按其概率大小依次排序:
p(x1) ≥ p(x2)≥ …≥ p(xn)
3. 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率
相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息
符号序列。
4. 将剩余的信息符号,按概率大小重新进行排序。
5. 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排
序。 6. 如此反复重复n-2次,最后只剩下两个概率。
7. 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相
应的码字,构成霍夫曼编码字。编码结束。
哈夫曼编码产生最佳整数前缀码,即没有一个码字是另一个码字的前缀,因此哈夫曼编码是唯一码。
编码之后,哈夫曼编码的平均码长为:
K?哈夫曼编码的效率为:
?p(x)Kii?1ni
??信源熵H(x)=
平均码长K三、实验内容
实验一、对信源进行哈夫曼编码,并计算编码效率。
1、按照实验一中的方法生成一10维离散无记忆信源X的概率分布。 2、对信源概率进行排序,(排序可用sort命令)。
3、取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列,(分配的0,1可另建一个向量保存)。
4、将剩余的信息符号,按概率大小重新进行排序。
5、重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排
序(利用for循环)。
6、如此反复重复n-2次,最后只剩下两个概率。
7、从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相
应的码字,构成霍夫曼编码字。编码结束。 8、计算平均码长与编码效率。
实验二、查看huffmandict函数,了解该函数的用途,调用格式,利用该函数
对实验一中的数据进行编码,并比较两者结果。
实 验 三
实验离散信源及其信息测度 名称 课程信息论基础 名称 姓 学 姜圆香 专业、班级 信计11101班 名 号 班内实验地05 实验时间 2014.3.24 序号 点 实验一:对信源进行哈夫曼编码,并计算编码效率。 201106216 10教四楼 1、按照实验一中的方法生成一10维离散无记忆信源X的概率分布。 2、对信源概率进行排序,(排序可用sort命令)。 3、取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列,(分配的0,1可另建一个向量保存)。 实 4、将剩余的信息符号,按概率大小重新进行排序。 验 5、重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再 。 内 排序(利用for循环) 6、如此反复重复n-2次,最后只剩下两个概率。 容 7、从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。编码结束。 8、计算平均码长与编码效率。 实验二: 查看huffmandict函数,了解该函数的用途,调用格式,利用该函数对实验一中的数据进行编码,并比较两者结果。 实验一:编程实现哈夫曼编码 代码: m=rand(1,10) s=sum(m); p=m/s q=p; n=10; a=zeros(n-1,n); 生成一个n-1行n列的数组 for i=1:n-1 [q,l]=sort(q) ; a(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,1:n*n)=blanks(n*n); end c(n-1,n)='1'; c(n-1,2*n)='0'; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)==1))-(n-2):n*(find(a(n-i+1,:)==1))) ; c(n-i,n)='1' ; 在分支的第一个元素后补1 c(n-i,n+1:2*n-1)=c(n-i,1:n-1) ; c(n-i,2*n)='0' ; 在分支的第一个元素后补0 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 完成Huffman编码 for i=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)); 计算每一个Huffman码长 end l=sum(p.*ll); 计算平均码长 fprintf('\\n Huffman编码结果为:\\n'); h fprintf('\\n 编码的平均码长为:\\n'); l 实验结果: Huffman编码结果为: H= 1111 000 1010 110 1110 100 1011 011 010 001 编码的平均码长为: l = 3.1834 实验二:利用huffmandict函数实现编码 代码: y=p/sum(p) symbols = [1:10] [dict,avglen] = huffmandict(symbols,y) temp = dict; for i = 1:length(temp) temp{i,2} = num2str(temp{i,2}); end temp 实验结果: symbols = 1 2 3 4 5 6 7 8 9 10 dict = [ 1] [1x4 double] [ 2] [1x3 double] [ 3] [1x4 double] [ 4] [1x3 double] [ 5] [1x4 double] [ 6] [1x3 double] [ 7] [1x4 double] [ 8] [1x3 double] [ 9] [1x3 double] [10] [1x3 double] avglen = 3.1835 temp = [ 1] '1 1 1 1' [ 2] '0 0 0' [ 3] '1 0 1 0' [ 4] '1 1 0' [ 5] '1 1 1 0' [ 6] '1 0 0' [ 7] '1 0 1 1' [ 8] '0 1 1' [ 9] '0 1 0' [10] '0 0 1' 实验小结: 本次实验,在熟练掌握哈弗曼编码的理论知识后,还很大程度考验了我们的编程能力,将树结构的引入以及对树的各结点的赋值实现Huffman编码。虽然自己最后没有独立的把整个过程实现,而是查阅了相关资料,但是,如果遇到需要编码的地方,我完全可以在Matlab里面用Huffman函数来实现编码,同样达到目的。
temp = [ 1] '1 1 1 1' [ 2] '0 0 0' [ 3] '1 0 1 0' [ 4] '1 1 0' [ 5] '1 1 1 0' [ 6] '1 0 0' [ 7] '1 0 1 1' [ 8] '0 1 1' [ 9] '0 1 0' [10] '0 0 1' 实验小结: 本次实验,在熟练掌握哈弗曼编码的理论知识后,还很大程度考验了我们的编程能力,将树结构的引入以及对树的各结点的赋值实现Huffman编码。虽然自己最后没有独立的把整个过程实现,而是查阅了相关资料,但是,如果遇到需要编码的地方,我完全可以在Matlab里面用Huffman函数来实现编码,同样达到目的。
正在阅读:
实验三 哈夫曼编码04-25
第七章会计账簿解析 - 图文05-19
我近视了作文400字06-21
企业厂长竞聘演讲稿12-02
ICS国际标准分类号07-18
小区重选和小区重定向门限修改后的效果评估04-25
5A景区游客中心需具备的功能04-16
公司各部门管理制度12-14
有关商业银行的股东将股权质押后的投票权限制问题研究04-21
华西附二院羊水穿刺注意事项 - 图文03-31
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 哈夫曼
- 编码
- 实验
- 印度国歌歌词
- 使用task的windchill集成webservice笔记
- l论文题目参考题目
- 9—地铁行车调度员手册
- 高一年级组工作总结
- 经济学知识竞赛题库
- 最新人教版二年级语文上册期末总复习资料(全册)
- 磁峰中远学校防校园暴力事件应急预案
- 扬州继续教育公共科目《心理健康与心理调适》判断题
- linux 基础题整理
- 太阳能光伏发电课程设计 - 图文
- 食材配送项目投标文件 - 图文
- 混凝土专项施工方案完整
- 《汉语拼音a o e》教学设计(第一课时)
- 尤溪陈氏人物志
- 爱国主义社会实践调研报告
- (文综)揭阳一中2013届高二下学期第一次阶段考试
- 人教版课标本第06册教案集
- 企业战略管理
- 通信线路及管道工程施工指导V1.0-中级 - 图文