信息论与编码自学报告09266

合集下载

信息论与编码课程报告

信息论与编码课程报告

信息论与编码课程报告
信息论与编码是一门重要的课程,在计算机科学与技术,通信工程,信号处理
等专业中发挥着重要的作用。

信息论涉及到信息的量化、源编码、信息隐藏,噪声抑制以及信息协议的分析等诸多方面。

而编码中的许多领域如信号处理、视频编码、图像处理等又建立在信息论的基础之上。

在这门课程中,学生可以学习如何把信息量化,以及不同的编码方法和算法,明白信息和音频的处理,还可以学习复杂格式的音频、视频编码。

此外,学习中还会涉及到模拟和数字信号,熵、信道容量与噪讲,数字信号处理,数字信号编码等多种多样的知识点,其中还包括噪讲模型、噪讲容量等多种不同概念。

整个信息论和编码领域有着丰富的应用,为听力、视觉等智能分析技术的实现
提供了理论支撑。

基于信息论的研究发明了压缩编码技术,它可以用来压缩数据,提高传输速率和储存空间,同时编码技术可以使数据免于传输过程中的损耗,有效地实现了音频、视频等多种数据的传输。

此外,信息论和编码在模式识别与多媒体通信、卫星通信、生物医学等多个领域都有着重要的应用。

综上所述,信息论与编码课程是个重要的学科,在计算机科学与技术,通信工程,算法,信号处理,多媒体通信,生物医学等领域中有着广泛的应用。

该课程主要是以学习源编码,熵、信道容量,噪讲,数字信号处理,数字信号编码,噪讲模型,压缩编码等多种专业概念为基础,因此有深入研习的必要,以获得多方面的知识和理解,为日后的技能应用打实基础。

信息论与编码实习报告

信息论与编码实习报告

信息论与编码实习报告指导老师:姓名:班级:学号:实验一绘制二进制熵函数曲线一、内容用Matlab软件制作二进制熵函数曲线。

二、要求1.掌握Matlab绘图函数2.掌握、理解熵函数表达式及其性质三.Matlab程序及实验结果1.matlab程序:p=0.00001:0.001:1;h=-p.*log2(p)-(1-p).*log2(1-p);plot(p,h);title('二进制熵函数曲线');ylabel('H(P,1-P)')2.运行结果:结果分析:从图中可已看出当p=0.5即信源等概时熵取得最大值。

实验二一般信道容量迭代算法一、内容编程实现一般信道容量迭代算法。

伪代码见教材。

二、要求1.掌握一般信道容量迭代算法的原理2.掌握MA TLAB开发环境的使用(尤其是程序调试技巧),或者使用C语言完成程序设计三.Matlab程序及运行结果1.matlab程序:clc;clear all;N = input('输入信源符号X的个数N=');M = input('输入信源符号Y的个数M=');p_yx=zeros(N,M); %程序设计需要信道矩阵初始化为零fprintf('输入信道矩阵概率\n')for i=1:Nfor j=1:Mp_yx(i,j)=input('p_yx='); %输入信道矩阵概率if p_yx(i)<0error('不符合概率分布')endendEndfor i=1:N %各行概率累加求和s(i)=0;for j=1:Ms(i)=s(i)+p_yx(i,j);endendfor i=1:N %判断是否符合概率分布if (s(i)<=0.999999||s(i)>=1.000001)error('不符合概率分布')endendb=input('输入迭代精度:'); %输入迭代精度for i=1:Np(i)=1.0/N; %取初始概率为均匀分布endfor j=1:M %计算Q(j)Q(j)=0;for i=1:NQ(j)=Q(j)+p(i)*p_yx(i,j);endendfor i=1:N %计算F(i) f(i)=0;for j=1:Mif(p_yx(i,j)==0)f(i)=f(i)+0;elsef(i)=f(i)+p_yx(i,j)*log(p_yx(i,j)/Q(j));endendF(i)=exp(f(i));endx=0;for i=1:N %计算x x=x+p(i)*F(i);endIL=log2(x); %计算ILIU=log2(max(F)); %计算IUn=1;while((IU-IL)>=b) %迭代计算for i=1:Np(i)=p(i)*F(i)/x; %重新赋值p(i) endfor j=1:M %计算Q(j) Q(j)=0;for i=1:NQ(j)=Q(j)+p(i)*p_yx(i,j);endendfor i=1:N %计算F(i) f(i)=0;for j=1:Mif(p_yx(i,j)==0)f(i)=f(i)+0;elsef(i)=f(i)+p_yx(i,j)*log(p_yx(i,j)/Q(j));endEndF(i)=exp(f(i));endx=0;for i=1:N %计算xx=x+p(i)*F(i);endIL=log2(x); %计算ILIU=log2(max(F)); %计算IUn=n+1;endfprintf('信道矩阵为:\n');disp(p_yx);fprintf('迭代次数n=%d\n',n);fprintf('信道容量C=%f比特/符号',IL);2.运行结果为:若输入信道矩阵为:0.8500 0.15000.7500 0.2500则运行结果为:实验四线性分组码的信道编码和译码一、内容编程实现线性分组码(6,2)重复码的信道编码和译码。

信息论与编码实习报告

信息论与编码实习报告

信息论与编码实习报告一、引言信息论与编码是通信工程、计算机科学和电子工程等领域的重要基础课程。

本次实习旨在通过实际操作,深入理解和掌握信息论与编码的基本原理和技术,提高我们的实际操作能力和问题解决能力。

二、实习内容1、信息论基础:实习的第一部分,我们通过自学和讨论的方式,深入学习了信息论的基本概念和原理,包括信息的度量、熵、信道容量等。

2、编码理论:在这一阶段,我们重点学习了线性编码、循环编码、哈夫曼编码等编码方法,并了解了编码的效率及其可靠性。

3、模拟与数字通信系统:我们通过模拟软件,设计和实现了简单的模拟通信系统,同时,也通过实验箱,了解了数字通信系统的基本原理和技术。

4、无线通信和网络:在这一部分,我们重点学习了无线通信和网络的基础知识,包括无线信道模型、无线调制解调技术、无线网络协议等。

5、实习项目:最后,我们根据所学的知识,完成了一个实习项目——设计并实现一个具有高可靠性和高效率的通信系统。

三、实习收获通过这次实习,我们收获颇丰。

首先,我们对信息论与编码的基本概念和原理有了更深入的理解和掌握,能够更好地将理论知识应用到实际中。

其次,我们提高了自己的实际操作能力和问题解决能力,能够在实践中发现和解决问题。

最后,我们了解了通信系统的基本原理和技术,对未来的学习和工作有了更好的准备。

四、结论本次实习是我们学习信息论与编码的重要环节,我们通过实际操作,深入理解和掌握了信息论与编码的基本原理和技术,提高了自己的实际操作能力和问题解决能力。

我们也发现了自己的不足之处,将在未来的学习和工作中更加努力,不断提高自己的能力和水平。

信息论与编码曹雪虹课后习题答案随着科技的发展,信息已经成为现代社会中不可或缺的一部分。

在大学中,信息论与编码作为一门重要的学科,已经成为了计算机科学、通信工程、电子工程等专业的必修课程。

而在这门课程中,曹雪虹教授的教材《信息论与编码》被广泛使用。

本文将介绍一些该教材的课后习题答案,以帮助读者更好地掌握信息论与编码的相关知识。

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告一、实验目的本实验主要目的是通过实验验证信息论与编码理论的基本原理,了解信息的产生、传输和编码的基本过程,深入理解信源、信道和编码的关系,以及各种编码技术的应用。

二、实验设备及原理实验设备:计算机、编码器、解码器、信道模拟器、信噪比计算器等。

实验原理:信息论是由香农提出的一种研究信息传输与数据压缩问题的数学理论。

信源产生的消息通常是具有统计规律的,信道是传送消息的媒体,编码是将消息转换成信号的过程。

根据信息论的基本原理,信息的度量单位是比特(bit),一个比特可以表示两个平等可能的事件。

信源的熵(Entropy)是用来衡量信源产生的信息量大小的物理量,熵越大,信息量就越多。

信道容量是用来衡量信道传输信息的极限容量,即信道的最高传输速率,单位是比特/秒。

编码是为了提高信道的利用率,减少传输时间,提高传输质量等目的而进行的一种信号转换过程。

常见的编码技术有霍夫曼编码、香农-费诺编码、区块编码等。

三、实验步骤1.运行编码器和解码器软件,设置信源信息,编码器将信源信息进行编码,生成信道输入信号。

2.设置信道模拟器的信道参数,模拟信道传输过程。

3.将信道输出信号输入到解码器,解码器将信道输出信号进行解码,恢复信源信息。

4.计算信道容量和实际传输速率,比较两者的差异。

5.改变信道参数和编码方式,观察对实际传输速率的影响。

四、实验结果与分析通过实验,我们可以得到不同信道及编码方式下的信息传输速率,根据信道参数和编码方式的不同,传输速率有时会接近信道容量,有时会低于信道容量。

这是因为在真实的传输过程中,存在信噪比、传输距离等因素导致的误码率,从而降低了实际传输速率。

在实验中,我们还可以观察到不同编码方式对传输速率的影响。

例如,霍夫曼编码适用于信源概率分布不均匀的情况,可以实现数据压缩,提高传输效率。

而区块编码适用于数据容量较大的情况,可以分块传输,降低传输错误率。

此外,通过实验我们还可以了解到信息论中的一些重要概念,如信源熵、信道容量等。

《信息论与编码》课程论文

《信息论与编码》课程论文

《信息论与编码》课程小结《信息论与编码》课程小结信息论是信息科学的主要理论基础之一,它是在长期通信工程实践和理论基础上发展起来的。

信息论是应用概率论、随机过程和数理统计和近代代数等方法,来研究信息的存储、传输和处理中一般规律的学科。

它的主要目的是提高通信系统的可靠性、有效性和安全性,以便达到系统的最优化。

编码理论与信息论紧密关联,它以信息论基本原理为理论依据,研究编码和译码的理论知识和实现方法。

通过《信息论与编码》课程的学习,得到了以下总结:一、信息论的基本理论体系1948年,香农在贝尔系统技术杂志上发表“通信的数学理论”。

在文中,他用概率测度和数理统计的方法系统地讨论了通信的基本问题,得出了几个重要而带有普遍意义的结论,并由此奠定了现代信息论的基础。

香农理论的核心是:揭示了在通信系统中采用适当的编码后能够实现高效率和高可靠地传输信息,并得出了信源编码定理和信道编码定理。

从数学观点看,这些定理是最优编码的存在定理。

但从工程观点看,这些定理不是结构性的,不能从定理的结果直接得出实现最优编码的具体方法。

然而,它们给出了编码的性能极限,在理论上阐明了通信系统中各种因素的相互关系,为寻找最佳通信系统提供了重要的理论依据。

对信息论的研究内容一般有以下三种理解:(1) 狭义信息论,也称经典信息论。

它主要研究信息的测度、信道容量以及信源和信道编码理论等问题。

这部分内容是信息论的基础理论,又称香农基本理论。

(2) 一般信息论,主要是研究信息传输和处理问题。

除了香农理论以外,还包括噪声理论、信号滤波和预测、统计检测与估计理论、调制理论、信息处理理论以及保密理论等。

后一部分内容以美国科学家维纳(N.Wiener)为代表,其中最有贡献的是维纳和苏联科学家柯尔莫哥洛夫。

(3) 广义信息论。

广义信息论不仅包括上述两方面的内容,而且包括所有与信息有关的自然和社会领域,如模式识别、计算机翻译、心理学、遗传学、神经生理学、语言学、语义学甚至包括社会学中有关信息的问题,是新兴的信息科学理论。

信息论与编码自学报告

信息论与编码自学报告

《信息论与编码》课程自学报告题目:AAC音频压缩编码学号:xxxxxxxxx姓名:xxxxxxx任课教师:xxxxxxx联系方式:xxxxxxxxxxxxx二零一六年一月一日一、自学内容小结与分析1. 基本概念要想无失真地传送连续信源的消息,要求信息率R 必须为无穷大。

这实际上是做不到的,因此实际通信系统允许一定的失真存在,那么对信息率的要求便可降低,换言之,就是允许压缩信源输出的信息率。

信息率失真理论研究的就是信息率与允许失真之间的关系。

1.1 失真函数与平均失真度为了定量地描述信息率与失真的关系,首先定义失真的测度。

设离散无记忆信源1212 , ,, (),(),,()()n n a a a X p a p a p a P X ⎛⎫⎛⎫= ⎪ ⎪⎝⎭⎝⎭。

信源符号通过信道传送到接收端Y ,1212, ,, (),(),,()()m m b b b Y p b p b p b P Y ⎛⎫⎛⎫= ⎪ ⎪⎝⎭⎝⎭。

对于每一对(),i j a b ,指定一个非负的函数(),0i j d a b ≥(1)称为单个符号的失真度或失真函数。

用它来表示信源发出一个符号,而在接收端再现所引起的误差或失真。

由于和都是随机变量,所以失真函数也是随机变量,限失真时的失真值,只能用它的数学期望或统计平均值,因此将失真函数的数学期望称为平均失真度,记为11[(,)]()(/)(,)n mi j i j i i j i j D E d a b p a p b a d a b ====∑∑ (2)1.2 信息率失真函数的定义 D 允许试验信道平均失真由信源分布、假想信道的转移概率和失真函数决定,若和已定,则调整使,称为D 失真许可的试验信道。

信息率失真函数R(D)由于互信息取决于信源分布和信道转移概率分布,当一定时,互信息I 是关于的下凸函数,存在极小值。

因而在上述允许信道PD 中,可以寻找一种信道,使给定的信源经过此信道传输后,互信息I(X ;Y)达到最小。

信息论与编码 课程总结

信息论与编码 课程总结

《信息论与编码》课程总结本学期我选修了《信息论与编码》这门课程,信息论是应用近代概率统计方法来研究信息传输,交换,存储和处理的一门学科,也是源于通信实践发展起来的一门新兴应用科学。

信息是系统传输,交换,存储和处理的对象,信息载荷在语言,文字,数据,图像等消息之中。

本书共学习了9章内容,系统详细的学习和深入了解了信息论的相关基本理论。

第一章首先了解了信息论的相关概念,了解到了信息论所研究的通信系统基本模型,以及香农定理的相关应用。

第二章学习到了熵和互信息这两个重要概念。

信源的熵是用来刻画信源发出的消息的平均不确定性,而两个随机变量之间的互信息则表示一个随机变量对另一个随机变量所提供的信息量。

第三章学习到了离散无记忆信源的无损编码。

根据香农的信源编码定理,明白了所谓的无损编码是指信源编码的错误概率可以任意小,但并非为零;信源的无损编码通常是对非常长的消息序列进行的。

并且了解到了几种不等长编码的算法,例如Huffman 编码,Shannon 编码等编码方法。

第四章主要研究的是信道,信道容量及信道编码定理的相关内容。

对信道的研究中,首先是对信道分类和建模,本章主要讨论离散无记忆信道和连续加性高斯噪声信道;其次研究信道容量,这是刻画信道的最重要的参数,最后讨论信道编码定理,该定理刻画了信道可靠传输信息的极限性能。

第五章主要介绍的是率失真理论和保真度准则下的信源编码。

与无损压缩编码不同,保真度准则下的信源编码允许有失真,且其压缩编码是降熵的,它要求在满足失真要求下使数据熵率尽可能低,从而降低码率,所以不可能从压缩后的数据中无失真的恢复出原来的消息。

第六章主要学到的是受限系统和受限系统编码。

在了解了受限系统的相关概念之后,又进一步的了解到了受限系统的有限状态转移图和受限系统的容量和其容量的计算方法等相关重要的知识内容。

第七章主要阐述的是线性分组纠错编码。

纠错编码通常也称为信道编码,在通信中信源编码,信道编码和数据转换编码常常是同时使用的,信源编码器执行数据压缩功能,把信源输出中的余度去除或减小。

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告一、实验目的信息论与编码是一门涉及信息的度量、传输和处理的学科,通过实验,旨在深入理解信息论的基本概念和编码原理,掌握常见的编码方法及其性能评估,提高对信息处理和通信系统的分析与设计能力。

二、实验原理(一)信息论基础信息熵是信息论中用于度量信息量的重要概念。

对于一个离散随机变量 X,其概率分布为 P(X) ={p(x1), p(x2),, p(xn)},则信息熵H(X) 的定义为:H(X) =∑p(xi)log2(p(xi))。

(二)编码原理1、无失真信源编码:通过去除信源中的冗余信息,实现用尽可能少的比特数来表示信源符号,常见的方法有香农编码、哈夫曼编码等。

2、有噪信道编码:为了提高信息在有噪声信道中传输的可靠性,通过添加冗余信息进行纠错编码,如线性分组码、卷积码等。

三、实验内容及步骤(一)信息熵的计算1、生成一个离散信源,例如信源符号集为{A, B, C, D},对应的概率分布为{02, 03, 01, 04}。

2、根据信息熵的定义,使用编程语言计算该信源的信息熵。

(二)香农编码1、按照香农编码的步骤,首先计算信源符号的概率,并根据概率计算每个符号的编码长度。

2、确定编码值,生成香农编码表。

(三)哈夫曼编码1、构建哈夫曼树,根据信源符号的概率确定树的结构。

2、为每个信源符号分配编码,生成哈夫曼编码表。

(四)线性分组码1、选择一种线性分组码,如(7, 4)汉明码。

2、生成编码矩阵,对输入信息进行编码。

3、在接收端进行纠错译码。

四、实验结果与分析(一)信息熵计算结果对于上述生成的离散信源,计算得到的信息熵约为 184 比特/符号。

这表明该信源存在一定的不确定性,需要一定的信息量来准确描述。

(二)香农编码结果香农编码表如下:|信源符号|概率|编码长度|编码值|||||||A|02|232|00||B|03|174|10||C|01|332|110||D|04|132|111|香农编码的平均码长较长,编码效率相对较低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《信息论与编码》课程自学报告题目:《信息论与编码》自学报告学号:姓名:任课教师:黄素娟联系方式:二零17年 1月 10日第一部分 阐述“第四章 信息率失真函数”主要内容 1、基本概念失真函数与平均失真度 平均失真度在离散情况下,信源X ={a1,a2,…ar} ,其概率分布p(x)=[p(a1),p(a2),…,p(ar)] ,信宿Y = {b1,b2,…bs} 。

若已知试验信道的传递概率为p(bj/ai)时,则平均失真度为:11()(,)()(/)(,)r siji i j XYi j D p ab d a b p a p ba d ab ====∑∑∑凡满足保真度准则---平均失真度D D0的试验信通称D 失真许可的试验信道。

失真函数假如某一信源X ,输出样值为xi ,xi {a1,…an},经过有失真的信源编码器,输出Y ,样值为yj ,yj {b1,…bm}。

如果xi =yj ,则认为没有失真;如果xi yj ,那么就产生了失真。

失真的大小,用一个量来表示,即失真函数d(xi ,yj),以衡量用yj 代替xi 所引起的失真程度。

一般失真函数定义为最常用的失真函数前三种失真函数适用于连续信源,后一种适用于离散信源。

信息率失真函数的定义互信息取决于信源分布和信道转移概率分布。

当p(xi)一定时,互信息I是关于p(yj/xi) 的U型凸函数,存在极小值。

在上述允许信道PD中,可以寻找一种信道pij,使给定的信源p(xi)经过此信道传输后,互信息I(X;Y)达到最小。

该最小的互信息就称为信息率失真函数R(D),即单位:bit/信源符号对于离散无记忆信源,R(D)函数可写成p(ai),i =1,2,…,n 是信源符号概率分布;p(bj/ai),i =1,2,…,n ,j =1,2,…,m 是转移概率分布; p(bj),j =1,2,…,m 是接收端收到符号概率分布。

信息率失真函数给出了熵压缩编码可能达到的最小熵率与失真的关系信息率失真函数的性质 1、R(D)函数的定义域和值域 R(D)的定义域为min max0D D D ≤≤≤{}min ()min (,)yxD p x d x y = ∑max min ()(,)yxD p x d x y ⎧⎫= ⎨⎬⎩⎭∑允许失真度D 的下限可以是零,这是不允许任何失真的情况。

2、R(D)是关于平均失真度D 的下凸函数设为任意两个平均失真,01a ≤≤,则有:1212[(1)]()(1)()R aD a D aR D a R D +-≤+-3、R(D) 是min max (,)D D 区间上的连续和严格单调递减函数。

)(U Hmaxmin离散信源的信息率失真函数离散信源信息率失真函数的参量表达式(1)(/)0j i p b a ≥(2)1(/)1,(1,...,)mji j p ba i n ==-∑(3)11()(/)(,)n miji i j i j p a p ba d ab D===∑∑(4)1(;)(/)(5)mi j i j I X Y p b a sDμ=Φ=--∑()()()(,)exp[(,)](4.3.16)i j i i j i j ijD s p a p b d a b sd a b λ=∑∑1()()()log (4.3.17)ni ii R s sD s p a λ==+∑二元及等概率离散信源的信息率失真函数 设二元信源[]{}{}1,0输出符号集1,0输入符号集000失真矩阵为211,所以21,其中1)(212121==∈==∈>⎥⎦⎤⎢⎣⎡=≥-≤⎭⎬⎫⎩⎨⎧-=⎥⎦⎤⎢⎣⎡y y Y x x X D p p p p x x x p X i ααα111(/)(,)()(/)log()(/)nmj i i j i ri j iji i p b a I X Y p a p b a p a p ba ====∑∑∑计算率失真函数R (D )对于这种简单信源,可从D (S )解出S 与D 的显式表达式。

()()()()()()()()()()()()⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧-----=---=---=---=⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧---=--=⎪⎪⎪⎩⎪⎪⎪⎨⎧--=-=-=-=+=αααααααααααααααααααααλαλαααααD D D D D D D D D D S S S p p x y p p p D x y p p p D x y p p p x y p DD p y p D Dp y p pD p DDD S D D e e e S D 212212221211212111111)/(11)/(11)/(11)/(21)1()(21)(1111ln11)(ppS p D D D R D D p H R D D H p H D p p p p D D D D D R -=======⎪⎪⎭⎫⎝⎛-=⎪⎪⎭⎫⎝⎛-+----⎪⎪⎭⎫ ⎝⎛--=1ln1,0)(,)()0(,0压缩的信息率。

定失真而可能熵,第二项是因容忍一上式右边第一项是信源)(1ln )1ln()1(ln 1ln ln )(max max max max αααααααα二元等概率离散信源的率失真函数当上述二元信源呈等概率分布时,上面式子分别退化为⎪⎪⎪⎩⎪⎪⎪⎨⎧===--=⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=-=--=-=-====)(21)(212121)()1(22111)1(221121min 1211212max y p y p D Dy p DD DDD D D j ααλααλααλα()()()()()()()()()()()())(2ln )()/(1111)/()/(11)/(11)/(11)/(112212112212212112221212122111αααααααααααααααααααDH D R x y p D x y p x y p D D x y p DD x y p D p x y p D DD D DD D D D D -=⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧-=-----===---==---=-=---=3保真度准则下的信源编码定理定理 (保真度准则下的信源编码定理,香农第三定理)设R(D)为一离散无记忆信源的信息率失真函数,并且有有限的失真测度D 。

对于任意 D 0,0≥>ε,以及任意长的码长k ,一定存在一种信源编码C ,其码字个数为[()]2+≥k R D M ε使编码后码的平均失真度≤D D 。

定理的含义是:只要码长k 足够长,总可以找到一种信源编码,使编码后的信息传输率略大于(直至无限逼近)率失真函数R(D),而码的平均失真度不大于给定的允许失真度,即:D D ≤由于R(D)为给定D 前提下信源编码可能达到的传信率的下限, 所以香农第三定理说明了:达到此下限的最佳信源编码是存在的。

第二部分 信源编码或信道编码典型案例的实现方案 信源编码典型案例的实现方案--霍夫曼编码的matlab 实现1.编码原理霍夫曼(Huffman)编码算法是满足前缀条件的平均二进制码长最短的编-源输出符号,而将较短的编码码字分配给较大概率的信源输出。

算法是:在信源符号集合中,首先将两个最小概率的信源输出合并为新的输出,其概率是两个相应输出符号概率之和。

这一过程重复下去,直到只剩下一个合并输出为止,这个最后的合并输出符号的概率为1。

这样就得到了一张树图,从树根开始,将编码符号1 和0 分配在同一节点的任意两分支上,这一分配过程重复直到树叶。

从树根到树叶途经支路上的编码最后就构成了一组异前置码,就是霍夫曼编码输出。

2.编码步骤(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的首行为止。

3.程序代码%取得信源概率矩阵,并进行合法性判断clear;P=input('请输入信源概率向量P=');N=length(P);for component=1:1:Nif(P(component)<0)error('信源概率不能小于0');endendif((sum(P)-1)>error('信源概率之和必须为1');end%建立各概率符号的位置索引矩阵Index,利于编码后从树根进行回溯,从而得出对应的编码Q=PIndex=zeros(N-1,N); %初始化Indexfor i=1:N-1[Q,L]=sort(Q);Index(i,:)=[L(1:N-i+1),zeros(1,i-1)];G(i,:)=Q;Q=[Q(1)+Q(2),Q(3:N),1]; %将Q中概率最小的两个元素合并,元素不足的地方补1end%根据以上建立的Index矩阵,进行回溯,获取信源编码for i=1:N-1Char(i,:)=blanks(N*N);%初始化一个由空格符组成的字符矩阵N*N,用于存放编码end%从码树的树根向树叶回溯,即从G矩阵的最后一行按与Index中的索引位置的对应关系向其第一行进行编码Char(N-1,N)='0';%G中的N-1行即最后一行第一个元素赋为0,存到Char中N-1行的N列位置Char(N-1,2*N)='1';%G中的N-1行即最后一行第二个元素赋为1,存到Char中N-1行的2*N列位置%以下从G的倒数第二行开始向前编码for i=2:N-1Char(N-i,1:N-1)=Char(N-i+1,N*(find(Index(N-i+1,:)==1)) -(N-2):N*(find(Index(N-i+1,:)==1)));%将Index后一行中索引为1的编码码字填入到当前行的第一个编码位置Char(N-i,N)='0'; %然后在当前行的第一个编码位置末尾填入'0'Char(N-i,N+1:2*N-1)=Char(N-i,1:N-1); %将G后一行中索引为1的编码码字填入到当前行的第二个编码位置Char(N-i,2*N)='1'; %然后在当前行的第二个编码位置末尾填入'1'for j=1:i-1%内循环作用:将Index后一行中索引不为1处的编码按照左右顺序填入当前行的第3个位置开始的地方,最后计算到Index的首行为止Char(N-i,(j+1)*N+1:(j+2)*N)=Char(N-i+1,N*(find(Index(N-i+1, :)==j+1)-1)+1:N*find(Index(N-i+1,:)==j+1));endend%Char中第一行的编码结果就是所需的Huffman 编码输出,通过Index中第一行索引将编码对应到相应概率的信源符号上。

相关文档
最新文档