试验报告评分标准.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《霍夫曼编信源码综合设计》标准实验报告 【实验目的】 通过本综合设计实验,掌握熵编码的原理和方法,并熟悉C语言的使用。 【预备知识】 1、熵的概念,数据压缩原理 2、数据结构及其编码原理(霍夫曼编码原则) 3、软件技术基础 4、一种程序设计语言(常用C语言) 【实验环境】 设备:计算机一台 软件:C程序编译器 【设计要求】 用C语言设计一个类似于压缩软件的程序,要求能够对任意文件进行Huffman编码,最后生成一个压缩文件,格式为*.hfm(具体格式见附录)。 【实验原理】 从信息论的分析可知,减少或消除各信源符号间的关联,并使各符号的出现趋于等概分布,将使离散信源达到最大熵,从而以最少的符号数传送最大的信息量。例如,在语音编码和图象编码中常用的一种编码技术——Huffman编码就是利用信息熵来进行数据压缩的。 霍夫曼(Huffman)在1952年提出了霍夫曼编码方法,即从下到上的编码方法。它的编码步骤: 初始化,根据n个信源符号按概率由大到小顺序进行排序。 把概率最小的两个符号组成一个节点。 重复步骤2,得到节点Pn+1、Pn+2、……、P2n-1,形成一棵“树”,其中的P2n-1称为根节点。 从根节点P2n-1开始到相应于每个符号的“树叶”,从上到下标上“0”(上枝)或者“1”(下枝),至于哪个为“1”哪个为“0”则无关紧要,最后的结果仅仅是分配的代码不同,而代码的平均长度是相同的。 从根节点P2n-1开始顺着树枝到每个叶子分别写出每个符号的代码。 按照上述得到的码表对应关系对信源数据进行编码。 霍夫曼码的码长虽然是可变的,但却不需要另外附加同步代码。例如,码串中的第1位为0,那末肯定是符号A,因为表示其他符号的代码没有一个是以0开始的,因此下一位就表示下一个符号代码的第1位。同样,如果出现“110”,那么它就代表符号D。如果事先编写出一本解释各种代码意义的“词典”,即码簿,那么就可以根据码簿一个码一个码地依次进行译码。 【实验步骤】 理解霍夫曼编码原理与编码格式,然后设计码表。 霍夫曼编码原理: 信息是用不确定性的量度定义的。 一个消息的可能性越小,其信息越多;而消息的可能性越大,则信息越小。在数学上,所传输的消息是其出现概率的单调下降函数。所谓信息量是指从N 个相等可能事件中选出一个事件所需要的信息度量或含量,也就是辨识N 个事件中特定的一个事件的过程中所需要提问“是或否”的最少次数。 定义符号的信息量: 信源的熵(平均信息量): 是信源的平均信息量,叫做信源的熵,它的单位是比特 (若式中的对数以2为底)。当信源各符号出现概率相等时,信源具有最大熵。 在编码中用熵值衡量是否为最佳编码。若以 表示编码器输出码字的平均码长,则当: :有冗余,不是最佳编码; :不可能; :最佳编码 (稍大于)。 霍夫曼(huffman)编码是变字长编码的最佳无损编码,其最佳排列方式的码字平均长度为, 式中为信源符号出现的概率,是的编码长度。 霍夫曼编码就是利用了这个定理,将等长分组的信源符号,根据其概率采用不等长编码。概率大的分组,使用短的码字编码;概率小的分组,使用长的码字编码。霍夫曼编码把信源符号按概率大小顺序排列,并设法按逆次序分配码字的长度。在分配码字的长度时,首先将出现概率最小的的两个符号的概率相加,合成一个概率;第二步把这个合成的概率看成是一个新组合符号的概率,重复上述做法,直到最后只剩下两个符号的概率为止。完成以上概率相加顺序排列后,再反过来逐步向前进行编码。每一步有两个分支,各赋予一个二进制码,可以对概率大的编为1码,概率小的编为0码。反之亦然。 编码格式和码表设计; 霍夫曼编码属于变长编码,所以在解码时需要预先知道编码中各个信源符号与码字之间的对应关系,即码表,因此,在设计编码格式时需要考虑在数据中包含该码表。由于本设计是针对文件进行的,除了在压缩文件中记录码表,还应当包含压缩文件的许多重要信息,如:文件大小,原文件名称、信源符号个数等。具体设计如下: 文件结构包含三部分: 文件头 码表 数据 图1 HUFFMAN压缩文件结构 第一部分为压缩文件头HUFFMANFILEHEADER,是一个结构,其定义如下: typedefstructtagHUFFMANFILEHEADER{ WORD hfType; 文件类型,必须是0x4846,即字符串HF DWORD hfSize; 文件大小,包括这12个字节 WORD FileNameLength; 被压缩文件名称的字节数 BYTE SourceSignalNum; 信源符号的个数 WORD hfOffBits; 从文件头到实际数据的偏移字节数 BYTE ValidDataBitsNum; (数据部分中)最后一个字节中有效的比特位数 } HUFFMANFILEHEADER

文档评论(0)

yuxiufeng + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档