实验一信息熵与图像熵计算

合集下载

图像熵

图像熵

OpenMp
(1)、OpenMP只能并行化for循环,它不会并行while和 do-while循环,而且只能并行循环次数在for循环外面就确 定了的for循环。 (2)、循环变量只能是整型和指针类型(不能是浮点型)
OpenMp使用
(3)、循环语句只能是单入口单出口的。循环内部不能改 变index,而且里面不能有goto、break、return。但是可以 使用continue,因为它并不会减少循环次数。另外exit语句 也是可以用的,因为它的能力太大,他一来,程序就结束了。
double Result::result(Mat* Xiang,vector<double>*Rp,vector<double>* Gp,vector<double>* Bp,vector<double>* Ri,vector<double>* Gi,vector<double>* Bi) { double E=0,Er=0,Eg=0,Eb=0; double all=(*Xiang).cols*((*Xiang).rows); int j=0; #pragma omp parallel for for(j;j<256;j++){ pictureData(Xiang, j, Ri, Gi, Bi);} #pragma omp parallel for int k=0; for(k;k<256;k++){ (*Rp).at(k)=(*Ri).at(k)/all; (*Gp).at(k)=(*Gi).at(k)/all; (*Bp).at(k)=(*Bi).at(k)/all; if( (*Rp).at(k)==0) { (*Rp).at(k)=1;} if((*Gp).at(k)==0) { (*Gp).at(k)=1;} if((*Bp).at(k)==0) { (*Bp).at(k)=1;} Er+=(*Rp).at(k)*log((*Rp).at(k)); Eg+=(*Gp).at(k)*log((*Gp).at(k)); Eb+=(*Bp).at(k)*log((*Bp).at(k)); }

计算信息熵实验原理的应用

计算信息熵实验原理的应用

计算信息熵实验原理的应用1. 实验目的本实验旨在探究信息熵在计算机科学和信息论中的应用,通过实验验证信息熵的计算原理,并分析其在数据压缩、密码学以及机器学习等领域的实际应用。

2. 实验原理信息熵是信息论中度量信息不确定性的常用指标。

信息熵的计算公式如下:H(X) = -Σ(P(x) * log2(P(x)))其中,H(X)代表随机变量X的信息熵,P(x)表示随机变量X取值为x时的概率。

信息熵的单位是比特,表示所需的平均比特数来编码一组符号。

3. 实验步骤1.首先,收集一组待处理的数据,可以是文本、图像或其他形式的数据。

2.对数据进行预处理,例如去除噪声、归一化处理等,以确保数据质量和准确性。

3.根据数据的特点和需求,选择合适的编码方式。

常用的编码方式包括ASCII编码、Unicode编码、Huffman编码等。

4.对编码后的数据计算信息熵。

根据实验原理中给出的信息熵计算公式,计算数据的信息熵。

可以使用编程语言的计算函数或自行编写计算代码进行计算。

5.分析实验结果。

根据计算得到的信息熵结果,进行进一步的分析和讨论。

比较不同编码方式和不同数据集的信息熵结果,探讨其差异和潜在规律。

6.探究信息熵在数据压缩、密码学和机器学习等领域的应用。

通过查阅相关文献和资料,了解和讨论信息熵在不同领域中的具体应用方式和效果。

4. 实验结果与讨论通过实验计算得到的信息熵结果可以用于评估数据的不确定性和信息量。

信息熵越高,表示数据的不确定性越大,需要更多的比特数来进行编码。

在数据压缩中,可以利用信息熵的概念来设计压缩算法,减少数据存储和传输的成本。

在密码学中,信息熵可以用于生成随机密钥,增加密码的强度和安全性。

在机器学习中,信息熵可以作为衡量模型复杂度和决策效果的指标,帮助选择和优化模型。

5. 实验结论信息熵是计算机科学和信息论中的重要概念,具有广泛的应用价值。

通过实验可以验证信息熵的计算原理,并了解其在数据压缩、密码学和机器学习等领域的应用。

关于信源熵的实验报告讲解

关于信源熵的实验报告讲解

实验报告实验名称关于信源熵的实验课程名称信息论与编码姓名xxx 成绩90班级电子信息1102学号**********日期2013.11.22地点综合实验楼实验一关于信源熵的实验一、实验目的1. 掌握离散信源熵的原理和计算方法。

2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。

3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。

4. 掌握Excel的绘图功能,使用Excel绘制散点图、直方图。

二、实验原理1. 离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。

离散信源只能产生有限种符号。

随机事件的自信息量I(xi)为其对应的随机变量xi 出现概率对数的负值。

即: I (xi )= -log2p ( xi)随机事件X 的平均不确定度(信源熵)H(X)为离散随机变量 xi 出现概率的数学期望,即:2.二元信源的信息熵设信源符号集X={0,1} ,每个符号发生的概率分别为p(0)= p,p(1)= q,p+ q =1,即信源的概率空间为:则该二元信源的信源熵为:H( X) = - plogp–qlogq = - plogp –(1 - p)log(1- p)即:H (p) = - plogp –(1 - p)log(1- p) 其中 0 ≤ p ≤13. MATLAB二维绘图用matlab 中的命令plot( x , y) 就可以自动绘制出二维图来。

例1-2,在matlab 上绘制余弦曲线图,y = cos x ,其中 0 ≤ x ≤2。

>>x =0:0.1:2*pi; %生成横坐标向量,使其为 0,0.1,0.2,…,6.2>>y =cos(x ); %计算余弦向量>>plot(x ,y ) %绘制图形4. MATLAB求解离散信源熵求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。

信息熵函数的计算

信息熵函数的计算

信息熵函数的计算信息熵是信息论中用于衡量信息量大小的指标,也是信源不确定性的测度。

它可以描述一个信源中包含的信息量的平均值。

信息熵的计算需要知道信源可能发出的事件和每个事件发生的概率。

设信源可能发出的事件为E₁、E₂、..、En,其对应的概率分别为p₁、p₂、..、pn。

则信息熵H的计算公式为:H = -p₁log₂p₁ - p₂log₂p₂ - ... - pnlog₂pn其中,log₂表示以2为底的对数运算。

信息熵的单位通常用比特(bit)来表示。

下面我们通过一个例子来说明信息熵的计算过程。

假设有一个信源可能发出的事件为E₁、E₂、E₃,其对应的概率分别为0.4、0.3、0.3首先,我们计算每个事件发生的概率的对数值:log₂0.4 ≈ -0.736log₂0.3 ≈ -0.879log₂0.3 ≈ -0.879然后,我们将概率与对数值相乘,再取负数:-0.4*(-0.736)≈0.2944-0.3*(-0.879)≈0.2637-0.3*(-0.879)≈0.2637最后,将这些结果相加得到信息熵:H≈0.2944+0.2637+0.2637≈0.8218所以,这个信源的信息熵约为0.8218比特。

信息熵的计算可以帮助我们了解一个信源的不确定性。

当所有事件发生的概率相等时,信息熵达到最大值,表示信源的不确定性最高。

反之,当一些事件的概率较大,而其他事件的概率较小时,信息熵会减小,表示信源的不确定性降低。

通过计算信息熵,我们可以得到一个信源的基本性质:1.信息熵越大,表示信源的不确定性越高。

2.信息熵等于0时,表示信源的输出是确定的,没有任何不确定性。

3. 信息熵的最大值是log₂n,其中n表示信源可能发出的事件的个数。

当信源中所有事件的发生概率均等时,信息熵达到最大值。

信息熵在通信、数据压缩、密码学等领域有着重要的应用。

在数据压缩中,通过降低数据的信息熵,可以减少数据的存储和传输量。

而在密码学中,信息熵可以用作一种衡量密码强度的指标,越高的信息熵代表更难破解的密码。

信息熵函数的计算

信息熵函数的计算

信息熵函数的计算信息熵是信息论中的一个重要概念,用于度量一组数据中的不确定性或信息量。

它是一个统计学参数,衡量随机事件的平均信息量。

信息熵通常用H(X)表示,其中X是随机变量。

信息熵的计算方法如下:1.首先,需要确定待计算的随机变量X的概率分布。

概率分布可以通过统计数据或者通过其他方法获取。

假设X的概率分布为P(X=x)。

2. 接下来,对于每个可能发生的事件X=x,计算其信息量。

信息量通常用-log(P(X=x))表示。

信息量表示了该事件发生时获得的信息量的大小。

3.对于所有可能发生的事件X=x,将其信息量相乘以概率P(X=x)。

计算所有事件的信息量乘以概率的累加和,即可得到信息熵H(X)。

信息熵的计算公式为:H(X) = -Σ P(X=x) * log(P(X=x))其中Σ表示对所有可能的值求和。

需要注意的是,信息熵的单位通常为比特(bits)。

如果使用其他单位(如纳特(nats)),则计算公式中的底数为自然对数的底数e。

信息熵的计算可以用于评估一组数据的不确定度。

当数据越均匀时,信息熵越大,表示其中的不确定性越高。

相反,当数据越集中时,信息熵越小,表示其中的不确定性越低。

信息熵还有一些重要的性质:1. 信息熵始终大于等于零,即H(X) ≥ 0。

当且仅当所有事件的概率相等时,信息熵达到最大值,此时为H(X) = log(n),其中n为事件的数量。

2.信息熵的计算不受事件的顺序影响。

3.信息熵可以用作决策树算法中的指标,用于选择最佳划分属性。

4.信息熵还可以用于计算条件熵,用于衡量随机变量与其他变量之间的关联程度。

总之,信息熵是信息论中的一个重要概念,用于度量一组数据中的不确定性或信息量。

通过计算事件的概率分布,利用信息量和概率的乘积,计算所有事件的信息量乘以概率的累加和,即可得到信息熵。

信息熵的计算可以帮助我们了解数据的不确定性程度,并在许多领域中有广泛应用。

信息论实验报告

信息论实验报告

一、实验目的1. 理解信息论的基本概念和原理;2. 掌握信息熵、条件熵、互信息等基本概念的计算方法;3. 学会使用 MATLAB 进行信息论实验,并分析实验结果;4. 提高编程能力和数据分析能力。

二、实验原理信息论是一门研究信息传输、处理和存储的学科,其核心是信息熵。

信息熵是衡量信息不确定性的度量,表示信息中所包含的平均信息量。

信息熵的计算公式如下:H(X) = -Σ p(x) log2(p(x))其中,H(X) 表示随机变量 X 的熵,p(x) 表示 X 取值为 x 的概率。

条件熵是衡量在已知另一个随机变量 Y 的条件下,随机变量 X 的不确定性。

条件熵的计算公式如下:H(X|Y) = -Σ p(x,y) log2(p(x|y))其中,H(X|Y) 表示在 Y 已知的条件下 X 的熵,p(x,y) 表示 X 和 Y 同时取值为x 和 y 的概率,p(x|y) 表示在 Y 已知的情况下 X 取值为 x 的条件概率。

互信息是衡量两个随机变量之间相互依赖程度的度量。

互信息的计算公式如下:I(X;Y) = H(X) - H(X|Y)其中,I(X;Y) 表示随机变量 X 和 Y 之间的互信息。

三、实验内容1. 使用 MATLAB 编写程序,计算给定信源的概率分布,并计算其熵;2. 使用 MATLAB 编写程序,计算给定两个随机变量的联合概率分布,并计算其条件熵和互信息;3. 分析实验结果,验证信息熵、条件熵和互信息之间的关系。

四、实验步骤1. 输入信源的概率分布,使用 MATLAB 计算 H(X);2. 输入两个随机变量的联合概率分布,使用 MATLAB 计算 H(X,Y)、H(X|Y) 和I(X;Y);3. 分析实验结果,比较 H(X)、H(X|Y) 和 I(X;Y) 之间的关系。

五、实验结果与分析1. 信源概率分布及其熵输入信源的概率分布为:p(x) = [0.2, 0.3, 0.5]计算得到:H(X) = -0.2 log2(0.2) - 0.3 log2(0.3) - 0.5 log2(0.5) ≈ 1.5852. 两个随机变量的联合概率分布及其条件熵和互信息输入两个随机变量的联合概率分布为:p(x,y) = [0.1, 0.2, 0.3, 0.4]计算得到:H(X,Y) = -0.1 log2(0.1) - 0.2 log2(0.2) - 0.3 log2(0.3) - 0.4log2(0.4) ≈ 2.097H(X|Y) = -0.1 log2(0.1) - 0.2 log2(0.2) - 0.3 log2(0.3) - 0.4log2(0.4) ≈ 1.585I(X;Y) = H(X) - H(X|Y) ≈ 0.512分析实验结果,可以发现:(1)信息熵 H(X) 表示信源中包含的平均信息量,当信源概率分布越均匀时,信息熵越大;(2)条件熵 H(X|Y) 表示在已知随机变量 Y 的条件下,随机变量 X 的不确定性,当 X 和 Y 之间的依赖程度越高时,条件熵越小;(3)互信息 I(X;Y) 表示随机变量 X 和 Y 之间的相互依赖程度,当 X 和 Y 之间的依赖程度越高时,互信息越大。

石箫绯+信息熵的表示和计算

石箫绯+信息熵的表示和计算

《教育信息处理》实验报告——信息熵的表示和计算学院:计算机科学学院班级:教育技术学091班姓名:石箫绯学号:40909020101实验一:信息熵的表示和计算一.实验题目:信息熵的表示和计算二.实验要求:要求输入一段英文文章,统计出英文字母的概率,并且计算出信息熵。

三.实验原理:首先定义一个整型的数组初始化为0,用getchar()输入一段英文文章直到回车为止,在此期间用循环去判断是那个字母,并对应到字符数组中去加一,在求出文章的总长度,最后在用循环去求出每个字母的概率以及信息熵并且打印输出。

四.算法与流程图:五.源程序代码:#include<stdio.h>#include<math.h> main(){int ch[26]={0};int sum=0;int i;double p[26]={0};double H=0;char c;printf("please input an english massage:\n");while((c=getchar())!='\n'){for (i=65;i<=90;i++){if (c==i){ch[i-65]++;sum++;}}for (i=97;i<=122;i++){if(c==i){ch[i-97]++;sum++;}}}for(i=0;i<26;i++){p[i]=(double)ch[i]/(double)sum ;H=H-p[i]*(log(p[i])/log(2));}for(i=0;i<=25;i++){printf("\np(%c)= %1.2f",i+65, p[i]);}printf("\n");printf("H=%f",H);printf("\n");}六.运行结果:七.程序优点:熵的大小可用于表示概率系统的不确定程度。

基于信息熵的图像压缩技术研究

基于信息熵的图像压缩技术研究

基于信息熵的图像压缩技术研究一、绪论图像压缩技术是一种将图像数据经过处理,以达到减少图像需要占用的空间大小的效果。

随着科技的不断进步,数字图像在生活中的应用越来越广泛,因此压缩技术的研究显得尤为重要。

基于信息熵的图像压缩技术是一种在图像处理领域中常用的技术,本文对其进行深入研究和探讨。

二、信息熵的概念信息熵是信息论中的重要概念。

信息熵是描述信息量大小的一个指标,通俗地来说就是信息的不确定性,具体表现为一个随机变量的所有可能取值的概率的对数倒数的加权平均。

信息熵越小表示信息的相对不确定程度越小,反之则越大。

三、基于信息熵的图像压缩算法步骤1.图像预处理图像压缩前需要对图像进行预处理,例如去除图像噪声、调整图像亮度等。

2.图像分块将图像分为若干个块,使得每个块的容量小于阈值。

块的大小会影响压缩比。

3.计算块信息熵对于每个块,计算其信息熵。

信息熵越小表示块的确定程度越高,块内冗余信息的多少也可通过信息熵得到反映。

4.图像编码根据块信息熵的大小,对图像进行编码。

不同的信息熵,对应不同的编码方式。

5.图像解码对图像进行解码,还原为原始图像。

四、实验结果使用基于信息熵的图像压缩算法对一张分辨率为512*512、大小为1MB的测试图像进行压缩。

将块大小设置为8*8,得到的压缩率为70.3%。

当将块大小设置为4*4时,压缩率达到了82.6%,但是图像质量比较低。

此外,在相同压缩率的情况下,基于信息熵的图像压缩算法相对于其他常规的图像压缩算法,具有更好的图像质量。

五、总结基于信息熵的图像压缩技术是一种在图像处理领域中常用的技术,其主要应用于数字图像的传输、存储、处理等方面。

本文对该技术进行了深入探讨和研究,展示了其压缩率高、图像质量好的优点。

但是该技术也存在一定缺陷,如压缩时间较长、大块图像的压缩效果不佳等。

因此,对于具体应用需根据实际需求进行选择。

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

实验一信息熵与图像熵计算(2 学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数;2.复习信息熵基本定义,能够自学图像熵定义和基本概念。

二、实验内容1.能够写出MATLAB源代码,求信源的信息熵;2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。

三、实验仪器、设备1.计算机-系统最低配置256M内存、P4 CPU;2.MATLAB编程软件。

四实验流程图五实验数据及结果分析四、实验原理1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。

2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。

自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。

所发出的消息不同,它们所含有的信息量也就不同。

任何一个消息的自信息量都代表不了信源所包含的平均自信息量。

不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:1( ) 1 ( ) [log ] ( ) log ( ) i n i i p a i H E p a p a X信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。

它是从平均意义上来表征信源的总体特性的。

对于某特定的信源,其信息熵只有一个。

不同的信源因统计特性不同,其熵也不同。

3.学习图像熵基本概念,能够求出图像一维熵和二维熵。

图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。

图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:2550 log i i i p p H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。

选择图像的邻域灰度均值作为灰度2分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255),2 ( , ) / ij p f i j N上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为:2550 log ij ij i p p H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。

五、实验步骤1.求解信息熵过程:(1)输入一个离散信源,并检查该信源是否是完备集;(2)去除信源中符号分布概率为零的元素;(3)根据平均信息量公式,求出离散信源的熵。

2.图像熵计算过程:(1)输入一幅图像,并将其转换成灰度图像;(2)统计出图像中每个灰度阶象素概率;(3)统计出图像中相邻两象素的灰度阶联合分布矩阵;(4)根据图像熵和二阶熵公式,计算出一幅图像的熵。

六、实验报告要求1.按照本节内容后实验报告形式书写;2.实验总结和心得要详细,可以根据自己实验情况,写出建议。

七、实验注意事项1.MATLAB语言课下多复习,尽量采用模块化编程方法,通过函数调用形式运行程序。

2.仔细理解、体会图像熵的概念,能够将其联合熵的概念理解透彻。

八、思考题举例说明图像熵、信息熵在现实中有何实践指导意义?附录1:实验报告样式:实验报告班级:姓名:学号:组别:同组人:课程名称:实验室:实验时间:(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验一信息熵与图像熵计算3一、实验目的:二、实验内容与原理:三、实验器材(设备、元器件、软件工具、平台):四、实验步骤:五、程序流程图:六、实验数据及结果分析:七、实验结论:八、思考题:九、编程、调试过程中遇到的问题及解决方法:十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。

附录2:图像一维二维熵程序:close all; clc;I=imread('C:\Documents and Settings\All Users\Documents\MyPictures\picture\Sunset.jpg');img=rgb2gray(I);imview(I),imview(img);[ix,iy]=size(img);P1=imhist(img)/(ix*iy);temp=double(img);temp=[temp,temp(:,1)];CoefficientMat=zeros(256,256);for x=1:ixfor y=1:iyi=temp(x,y); j=temp(x,y+1);CoefficientMat(i+1,j+1)=CoefficientMat(i+1,j+1)+1; endendP2 = CoefficientMat./(ix*iy);H1=0; H2=0;for i=1:256if P1(i)~=0H1=H1-P1(i)*log2(P1(i));endfor j=1:256if P2(i,j)~=0H2=H2-P2(i,j)*log2(P2(i,j));endendendH2=H2/2;sprintf('1 ord image entropy is:%d',H1)sprintf('2 ord image entropy is:%d',H2)、实验二香农编码(2 个学时)一、实验目的1.了解香农编码的基本原理及其特点;2.熟悉掌握香农编码的方法和步骤;3.掌握MATLAB 编写香农编码的程序。

二、实验内容1.根据香农编码的方法和步骤,用香农编码编写程序;2.用编写的源程序验证书中例题的正确性。

三、实验仪器、设备1.计算机-系统最低配置256M 内存、P4 CPU;2. MATLAB 编程软件。

四、实验原理1.香农编码原理:香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,这是一个很重要的极限定理。

香农第一定理指出,选择每个码字的长度i K 满足下式:I (Xi ) K I (Xi ) 1,i就可以得到这种码,这种编码方法就是香农编码。

2.香农编码算法:1.将信源消息符号按其出现的概率大小依次排列:1 2 n P(X ) P(X ) , ,P(X )2.确定满足下列不等式整数码长i K ;log2p( ) log2 ( ) 1 i i i x K p x3.为了编成唯一可译码,计算第i 个消息的累加概率;11( )ii kkp p x4.将累加概率i P变成二进制数;5.取i P二进制数的小数点后i K 位即为该消息符号的二进制码字。

五、实验步骤1.根据实验原理,设计香农编码程序;2.输入一组信源消息符号概率,可以求香农编码、平均码长和编码效率。

六、实验报告要求51. 按照本节内容后实验报告形式书写;2. 实验总结和心得要详细,可以根据自己情况写出建议。

七、实验注意事项1.香农编码是符号概率大的用短表示,小长程序中香农编码是符号概率大的用短表示,小长程序中香农编码是符号概率大的用短表示,小长程序中需要对概率进行排序,此我们调用MATLAB MATLABMATLABMATLABMATLAB的库函数;2.最后需要注意的是,求得码字依次与排序符号概率对应;3.向无穷方取最小正整数位ceilceilceil 函数。

八、思考题举例说明香农编码在现实中有际作用,列一个子并简要说明?附录1:实验报告样式:实验报告班级:姓名:学号:组别:同组人:课程名称:实验室:实验时间:(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验二香农编码一、实验目的:二、实验内容与原理:三、实验器材(设备、元器件、软件工具、平台):四、实验步骤:五、程序流程图:六、实验数据及结果分析:七、实验结论:八、思考题:九、编程、调试过程中遇到的问题及解决方法:十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。

附录2:香农编码程序:close all;clc;n=input('输入信源符号个数:');p=zeros(1,n);for i=1:np(1,i)=input('输入信源符号概率:');endif sum(p)<1||sum(p)>1error('输入概率不符合概率分布')end6y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y';for i=2:nD(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2);endfor i=1:nD(i,3)=-log2(D(i,1));D(i,4)=ceil(D(i,3));endDA=D(:,2)';B=D(:,4)';Code_length=0;for j=1:nCode_length=Code_length+p(j)*D(j,4);endH=0;for j=1:nH=H+p(j)*log2(1/p(j));endfor j=1:nfprintf('输入信源符号概率为%f的码字为:',p(1,j)); C=deczbin(A(j),B(j));disp(C)endEfficiency=H/(Code_length)fprintf('平均码长:\n');disp(Code_length)fprintf('\n 香农编码效率:\n');disp(Efficiency)A:累加概率;B:码子长度。

:码子长度。

function [C]=deczbin(A,B)C=zeros(1,B); temp=A;for i=1:Btemp=temp*2;if temp>1temp=temp-1;C(1,i)=1;elseC(1,i)=0;endend7实验三费诺编码(2 学时)一、实验目的掌握费诺编码方法的基本步骤及优缺点。

二、实验内容对于给定的信源的概率分布,按照费诺编码的方法进行计算机实现。

三、实验仪器、设备1.计算机-系统最低配置256M 内存、P4 CPU;2.MATLAB 编程软件。

四、实验原理1.费诺编码原理:费诺编码就是通过使编码中各个句号出现的概率大致相等,实现概率均匀化,从而减少冗余度,提高编码效率。

凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。

在编N 进制码时首先将信源消息符号按其出现的额概率一次又小到大排列开来,并将排列好的心愿符号按概率值分N 大组,使N 组的概率之和近似相同,并对各组赋予一个N 进制码元0、1...N-1。

相关文档
最新文档