Huffman编码和译码的MATLAB实现.doc

Huffman编码及译码的MATLAB实现

沈逸峰

(上海师范大学 信息与机电工程学院,上海 200333)

摘要:本论文首先介绍了Huffman编码的原理以及与其它编码相比它的优势随在,随后基于Huffman编码的原理,利用MATLAB编译出26个英文字母加空格的Huffman码表以及相应的编码和译码程序。

关键词:Huffman,MATLAB

Implement of Huffman code and decode in Matlab

Shen Yi-feng

(School of Information and Engineering.Shanghai Normal University.Shanghai.200333)

Abstract:This article has mainly introduced the theory of Huffman Code and the advantage of this code.Then, we use MATLAB to find the code table for the English alphabet and space based on Huffman Code theory. Finally, we design the code and decode program for these alphabet and space based on the same theory.

Key words:Huffman, MATLAB

1.引言

Huffman编码属于信源编码,由于信源符号之间存在分布不均匀和相关性,致使信源存在冗余度。因此信源编码的主要任务就是减少冗余,从而提高编码的效率。信源编码的关键是信息论中的两个基本定理[1]:无失真编码定理和限失真编码定理,其中,无失真编码定理可看成是可逆编码的基础,即当信源符号变换为代码后,可从代码无失真地恢复原信号,本文所研究的Huffman编码即是一种基于无失真编码定理的最佳无失真信源编码

2.Huffman编码简介及其优势

Huffman 是一种可变字长编码Huffman于1952年,完全出现概率,最佳编码,经常应用于数据压缩例如,在英文中,p的出现概率很高,而u出现概率利用哈夫曼Huffman编码对进行压缩时,p很有可能用1位(bit)来表示,而z则可能25个位来表示。如果用普通的方法时,每个英文字母均占用一个字节。二者相比,Huffman大幅度提高压缩的

3.Huffman编码原理的实现

实现Huffman编码原理的步骤如下:

首先将信源符号集中的符号按概率大小从大到小排列。

用0和1表示概率最小的两个符号。可用0表示概率小的符

号,也可用1表示概率小的符号,但整个编码需保持一致。

将这两个概率最小的符号合并成一个符号,合并符号概率为

最小概率之和,将合并后的符号与其余符号组成一个N-1的新信源符号集,称之为缩减符号集。

对缩减符号集用步骤1,2操作

以此类推,直到只剩两个符号,将0和1分别赋予它们。

根据以上步骤,得到0,1赋值,画出Huffman码树,并从最

后一个合并符号回朔得到Huffmaan编码。

下面给出一个具体实例来说明Huffman编码的实现过程。

4.举例说明

已知有四个符号的符号集,它们的概率如下:

对这四个符号进行Huffman编码。

根据Huffman编码的原理,我们首先对这四个符号集按概率大小从大到小排列,即a1,a2,a3,a4。然后,我们再根据编码原理的第二步,把概率最小的a4用符号1来表示,把概率第二小的a3用符号0来表示,并把a4,a3合并成a34,a34的概率为两者概率之和。这里要注意的是,既然我们把a4和a3合并成一个新符号a34,那么最后编码的时候a4,a3一定要是等码长的,否则我们就不能将这两个符号合并。组成的新信源符号集由a1,a2,a34三个符号组成,它们所对应的概率分别是0.5,0.3和0.2,因此将概率最小的a34用符号1来表示,把概率第二小的a2用符号0来表示,并把a34,a2合并成a234,a234的概率为两者概率之和。注意虽然最后我们只要对a1,a2,a3,a4四个符号进行Huffman编码,但在编码的过程中a34和a2的码长必须一致,否则就不能将两者合并。组成的新信源符号集由a1,a234两个符号组成,它们两者的概率相等,都是0.5,因此我们将a234用符号1来表示,a1用符号0来表示。接下来我们构造Huffman树如下图所示:

a4 a34 a234 a1234

0 0 0

a3

matlab完成信源编码译码,Huffman编码和译码的MATLAB实现.doc相关推荐

  1. Huffman编码与译码

    Huffman树的构建说明 样例分析: 对于一个字符串输入 c b a x y y z z 若采用ASCII 编码方式,每一个字符都是char类型,每个字符所占空间为一个字节,因此8个字符就需要8个字 ...

  2. matlab完成信源编码译码,matlab哈夫曼译码

    Huffman 编码的 matlab 实现 一.信源编码介绍 为了...经典的方法还是仙农编码 法.费诺编码法和霍夫曼...信源编码和译码,而是事先规定一个 译码差错率的...... 2013 Vol ...

  3. 电文的编码和译码,哈夫曼编码译码(C语言)

    内容: 从键盘接收一串电文字符,输出对应的Huffman(哈夫曼)编码,同时,能翻译由Huffman编码生成的代码串,输出对应的电文字符串.设计要求: (1)构造一棵Huffman树:         ...

  4. Matlab实现Huffman编码

    一.实验目的: (1)了解信源变长码的编码方法: (2)掌握哈夫曼编码方法: (3)掌握MATLAB的编程.                                               ...

  5. crc校验matlab编码流程图,crc校验matlab

    关键词: MATLAB;C 语言 ;CRC 循环冗余校验码 2 1.概要 1.1... 结果:出错了 七.思考题 1.掌握按字节编码的过程,试着写出CRC 校验编码的Matlab 程序? %main ...

  6. huffman编码的程序流程图_Huffman编码软件实现.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp软件工程 Huffman编码软件实现.doc8页 本文档一共被下 ...

  7. Huffman树进行编码和译码

    //编码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> ...

  8. 算术编码、译码以及matlab实现

    算术编码是一种采用的编码,我们用matlab语言来实现算术码的编码.译码过程. 首先,我们给定研究范围为 2元信号.用{0,1}符号来表示,然后我们假设发送方和接收方都知道符号0出现的概率p(0)和符 ...

  9. 【编码译码】基于matlab QC-LDPC码编码和译码【含Matlab译码 2194期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[编码译码]基于matlab QC-LDPC码编码和译码[含Matlab译码 2194期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

最新文章

  1. html2canvas文字重叠(手机端)
  2. Nmap扫描教程之DNS服务类
  3. DevOps发展的9个趋势
  4. 全球500强企业人力资源管理之道
  5. 如何使用Instruments诊断App(Swift版):起步
  6. 数据光端机设备性能指标介绍
  7. Java如何避免重量级锁,Java 中锁是如何一步步膨胀的(偏向锁、轻量级锁、重量级锁)...
  8. PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
  9. codeblocks哪个字体最舒服_如果给你一百万让你放弃一种美食永远不吃,你会放弃哪个?...
  10. 【2019.09.08】2019icpc南昌网络赛
  11. 双11拼团最后的福利!老用户如何解散团并加入新团!
  12. MSSQL表别名使用注意事项
  13. 计算机ppt制作培训心得,计算机培训心得
  14. 搭建结构光三维扫描仪(基于TI资料,PointGrey相机+DLP投影仪搭建成的)
  15. 避免社会工程和网络钓鱼攻击
  16. python端口绑定错误怎么解决,python的 port binding error 请问怎么解决
  17. python列表的事例_python列表使用实例
  18. H3C 交换机web页
  19. You hasn‘t joined this enterprise!
  20. 小案例 JavaScript-简易五子棋

热门文章

  1. KeyStore加载PublicKey/PrivateKey(公/私钥)证书
  2. mysql_query('set names gbk')_mysql_query(SET NAMES 'GBK');SET NAMES 'GBK'是干什么的?什么意思?...
  3. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)
  4. Java 异步方法转同步
  5. 如何进行不同容量硬盘对拷
  6. 吴恩达机器学习MATLAB代码笔记(1)梯度下降
  7. Eclipse各版本代号一览表以及官网上有很多版本的eclipse,下载哪个版本比较合适呢?
  8. adb不是内部命令和sudo: adb: command not found
  9. linux http status404,解决问题:HTTP Status 404(The requested resource is not avail
  10. java设置httpheaders_HttpClient 请求添加Header头部信息