信息论与编码..doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息论与编码.

中南大学 信息论与编码实验报告 专业班级: 通信1204 指导老师: 梁建武 姓 名: 学 号: 哈夫曼编码的matlab实现 一、实验目的 掌握哈夫曼编码的原理及编码步骤 练习matlab中哈夫曼编码函数的调用及通信工具箱的使用 二、实验内容: 用Matlab语言编程实现霍夫曼(Huffman)编码。 三、实验原理及编码思想: 通信的根本问题是如何将信源输出的信息在接收端的信宿精确或近似的复制出来。为了有效地复制信号,就通过对信源进行编码,使通信系统与信源的统计特性相匹配。 若接收端要求无失真地精确地复制信源输出的信息,这样的信源编码即为无失真编码。即使对于一个小的时间段内,连续信源输出的信息量也可以是无限大的,所以对其是无法实现无失真编码的;而离散信源输出的信息量却可以看成是有限的,所以只有离散信源才可能实现无失真编码。 凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。 变长编码的最佳编码定理:在变长码中,对于概率大的信息符号编以短字长的码;对于概率小的信息符号编以长字长的码。如果码字长度严格按照符号概率的大小顺序排列,则平均码字长度一定小于俺任何顺序排列方式得到的码字长度。 哈夫曼编码就是利用了这个定理,讲等长分组的信源符号,根据其概率分布采用不等长编码。概率大的分组,使用短的码字编码;概率小的分组,使用长的码字编码。哈夫曼编码把信源按概率大小顺序排列,并设法按逆次序分配码字的长度。在分配码字的长度时,首先将出现概率最小的两个符号相加,合成一个概率;第二步把这个合成的概率看成是一个新组合符号的概率,重复上述做法,直到最后只剩下两个符号的概率为止。完成以上概率相加顺序排列后,再反过来逐步向前进行编码。每一步有两个分支,各赋予一个二进制码,可以对概率大的编为0码,概率小的编为1码。反之亦然。 哈夫曼编码的具体步骤归纳如下: 统计n个信源消息符号,得到n个不同概率的信息符号。 将这n个信源信息符号按其概率大小依次排序: p(x1) ≥ p(x2)≥ …≥ p(xn) 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列。 将剩余的信息符号,按概率大小重新进行排序。 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。 如此反复重复n-2次,最后只剩下两个概率。 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。编码结束。 哈夫曼编码产生最佳整数前缀码,即没有一个码字是另一个码字的前缀,因此哈夫曼编码是唯一码。 编码之后,哈夫曼编码的平均码长为: 哈夫曼编码的效率为: 例如: 设信源共7个符号消息,其概率如下表所示 信源消息符号xi x1 x2 x3 x4 x5 x6 x7 符号概率P( xi ) 0.20 0.19 0.18 0.17 0.15 0.10 0.01 其编码过程如下所示: 该哈夫曼码的平均码长为 编码效率为: 四、程序设计思路 分为两步,首先是码树形成过程:对信源概率进行合并形成编码码树。然后是码树回溯过程:在码树上分配编码码字并最终得到哈夫曼编码。 1、码树形成过程:将信源概率按照从小到大顺序排序并建立相应的位置索引。然后按上述规则进行信源合并,再对信源进行排序并建立新的位置索引,直到合并结束。在这一过程中每一次都把排序后的信源概率存入矩阵G中,位置索引存入矩阵Index中。这样,由排序之后的概率矩阵?G以及索引矩阵Index就可以恢复原概率矩阵P了,从而保证了回溯过程能够进行下去。 2、码树回溯过程:在码树上分配编码码字并最终得到Huffman 编码。从索引矩阵M 的末行开始回溯。 (1) 在Index 的末行2元素位置填入0和1。 (2) 根据该行索引1 位置指示,将索引1 位置的编码(‘1’)填入上一行的第一、第二元 素位置,并在它们之后分别添加‘0’和‘1’。 (3) 将索引不为‘1’的位置的编码值(‘0’)填入上一行的相应位置(第3 列)。 (4) 以Index的倒数第二行开始向上,重复步骤(1) ~ (3),直到计算至Index的首行为止。 五、程序代码: %取得信源概率矩阵,并进行合法性判断 clear; P=input(请输入信源概率向量P=); N=length(P); for co

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档