关于某信源熵地实验报告材料
大三下-信息论实验报告
实验1 绘制二进熵函数曲线、串联信道容量曲线一、实验内容用Excel 或Matlab 软件制作二进熵函数曲线、串联信道容量曲线。
二、实验环境1. 计算机2. Windows 2000 或以上3. Microsoft Office 2000 或以上4. Matlab 6.0或以上 三、实验目的1. 掌握Excel 的数据填充、公式运算和图表制作2. 掌握Matlab 绘图函数3. 掌握、理解熵函数表达式及其性质 四、实验要求1. 提前预习实验,认真阅读实验原理以及相应的参考书。
2. 认真高效的完成实验,实验中服从实验室管理人员以及实验指导老师的管理。
3. 认真填写实验报告。
五、实验原理1. Excel 的图表功能(略)2. 信源熵的概念及性质()()[]()[]())(1)(1 .log )( .)( 1log 1log )(log )()(10 , 110)(21Q H P H Q P H b nX H a p H p p p p x p x p X H p p p x x X P X ii i λλλλ-+≥-+≤=--+-=-=≤≤⎩⎨⎧⎭⎬⎫-===⎥⎦⎤⎢⎣⎡∑3. 串联信道的信道容量(图 1)。
图 1 三个二元对称信道(BSC )的串联p -1p -1pp 01p -1p -1pp 01p -1p -1pp 011IIIIIIp=0.00001:0.001:0.9999; h=Hp(p);plot(p,h);title('熵函数')p=0.00001:0.001:0.9999;c=1-Hp(p.^3+3.*p.*(1-p).^2); plot(p,c);title('信道容量')p=0.00001:0.001:0.9999;c1=1-Hp(p);c2=1-Hp(2*p.*(1-p));c3=1-Hp(p.^3+3.*p.*(1-p).^2); subplot(3,1,1)plot(p,c1);title('CⅠ');subplot(3,1,2)plot(p,c2);title('CⅠⅡ');subplot(3,1,3)plot(p,c3);title('CⅠⅡⅢ');实验4 容量代价函数的计算程序设计一、问题的提出:假定一个离散无记忆信源(DMC )的输入符号集为A X ={1,2,...,r},输出符号集为A Y ={1,2,....,s},信道的转移概率矩阵P(Y|X):{p(y|x)};该信道不是免费的,其输入代价为b(x)。
信源熵值计算实验报告材料(成型)(2)
信息论与编码课程设计报告设计题目:专业班级学号学生指导教师教师评分年月日目录目录一、设计任务与要求 (1)二、设计思路 (1)三、设计流程图 (2)四、程序运行及结果 (3)五、心得体会 (3)参考文献 (3)附录:源程序 (4)设计一.信源熵值计算一、设计任务与要求任务与要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。
二、设计思路由于能力有限,该程序统计只含有字母文档与空格的文档,下面对程序进行讲解:第一步:打开一个名为“text”的TXT文档,并判断文档是否为空,读入一篇英文文章存入一个数组temp,为了程序准确性将所读容转存到另一个数组S,计算该数组中每个字母与空格的出现次数(遇到小写字母都将其转化为大写字母进行计数),每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;第三步:通过统计数据和信息熵公式计算出所求信源熵值并计算文档长度。
三、设计流程图四、程序运行及结果建立文件夹,输入文字,编写好程序并运行,查看结果输入测试文档“text2”There is no hate without fear. Hate is crystallized fear, fears dividend, fear objectivized. We hate what we fear and so where hate is, fear is lurking. Thus we hate what threatens our person, our vanity and our dreams and plans for ourselves. If we can isolate this element in what we hate we may be able to cease from hating.结果:五、心得体会信息论与编码是我们电子信息工程的一门重要的专业课,通过对本次课程设计,学习将学到的理论知识用于实践,同时也学习了用软件编写程序,进一步对本课程知识的巩固和理解。
实验一-信息熵与图像熵计算-正确
实验一信息熵与图像熵计算(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构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。
离散信源熵信道容量实验报告
离散信源熵信道容量实验报告实验目的:通过模拟离散信源熵和信道容量的实验,掌握熵和信道容量的概念及计算方法。
实验原理:离散信源:离散信源是指其输出符号集合为有限的离散符号集合,通常用概率分布来描述其输出符号的概率分布,称为离散概率分布。
离散信源的熵是度量这一离散概率分布的不确定度的量度,其单位是比特。
离散信源的熵公式为:H(S)=-Σpi×log2pi其中,H(S)为离散信源的熵,pi为消息符号i出现的概率,log2为以2为底的对数。
信道容量:信道容量是指在某一固定的信噪比下,能够传送的最大信息速率。
信道容量的大小决定了数字通信系统的最高可靠传输速率。
离散无记忆信道的信道容量公式为:C=max{I(X;Y)}其中,X为输入符号,Y为输出符号,I为信息熵。
实验步骤:1. 生成随机概率分布对于3种不同的符号数量,生成随机的符号及其概率分布。
在生成时,要求概率之和为1。
2. 计算离散信源的熵根据所生成的随机概率分布计算离散信源的熵。
3. 构建离散无记忆信道构建一个离散的2进制对称信道,并存储在一个概率矩阵中,利用生成的概率分布对该矩阵进行初始化。
4. 计算信道容量根据所构建的离散无记忆信道计算其信道容量。
实验结果分析:以下是实验结果分析,其中H(S)表示离散信源的熵,C表示离散无记忆信道的信道容量。
符号数量为3时:符号概率a 0.2b 0.3c 0.5H(S) = 1.485构建的离散无记忆信道的概率矩阵为:| 0 | 1 |--------------------------a | 0.20 | 0.80 |--------------------------b | 0.60 | 0.40 |--------------------------c | 0.80 | 0.20 |--------------------------C = 0.823从实验结果可以看出,当符号数量增加时,熵的值也会随之增加,这是由于符号集合增加,随机性增强所导致的。
实验一灰度图像信息熵的相关计算与分析
实验⼀灰度图像信息熵的相关计算与分析实验⼀灰度图像信息熵的相关计算与分析⼀、实验⽬的1、复习信息熵,条件熵,联合熵,互信息,相对熵的基本定义, 掌握其计算⽅法,学习互信息与相对熵的区别之处并⽐较两者的有效性,加深对所学理论理论知识的理解。
2、掌握图像的的基本处理⽅法,了解图像的编码原理。
3、学习使⽤matlab ,掌握matlab 的编程。
4、通过对⽐分析,。
在解决问题的过程中,锻炼⾃⾝对问题的研究能⼒。
⼆、实验内容与要求1、计算灰度图像的信息熵,条件熵,联合熵,互信息,相对熵,并⽐较互信息和相对熵在判别两幅图像的联系与区别。
2、利⽤matlab 编程计算,并书写完整实验报告。
三、实验原理1、信息熵离散随机变量X 的熵H(X)为: ()()log ()x H X p x p x χ∈=-∑图像熵是⼀种特征的统计形式,它反映了图像中平均信息量的多少。
图像的⼀维熵表⽰图像中灰度分布的聚集特征所包含的信息量,将图像的灰度值进⾏数学统计,便可得到每个灰度值出现的次数及概率,则定义灰度图像的⼀元灰度熵为:255log iii H p p==-∑利⽤信息熵的计算公式便可计算图像的信息熵,求出任意⼀个离散信源的熵(平均⾃信息量)。
⾃信息是⼀个随机变量,它是指某⼀信源发出某⼀消息所含有的信息量。
所发出的消息不同,它们所含有的信息量也就不同。
任何⼀个消息的⾃信息量都代表不了信源所包含的平均⾃信息量。
信息熵的意义:信源的信息熵H 是从整个信源的统计特性来考虑的。
它是从平均意义上来表征信源的总体特性的。
对于某特定的信源,其信息熵只有⼀个。
不同的信源因统计特性不同,其熵也不同。
图像的⼀维熵可以表⽰图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在⼀维熵的基础上引⼊能够反映灰度分布空间特征的特征量来组成图像的⼆维熵。
选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征⼆元组,记为( i, j ),其中i 表⽰像素的灰度值(0255)i ≤≤,j 表⽰邻域灰度(0255)j ≤≤,2(,)/ij P f i j N=上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中 f(i, j)为特征⼆元组(i, j)出现的频数,N 为图像的尺度,定义离散的图像⼆维熵为:2550log ij iji H p p ==∑构造的图像⼆维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。
信源熵值计算实验报告
result=-result;
printf("信息熵为:%f",result);
printf("\n");
return 0;
}
运行结果如下:
其中guojia.txt中的文档如下:
There is no hate without fear. Hate is crystallized fear, fear’s dividend, fear objectivized. We hate what we fear and so where hate is, fear is lurking. Thus we hate what threatens our person, our vanity and our dreams and plans for ourselves. If we can isolate this element in what we hate we may be able to cease from hating.
fread(temp,1, 486, f);}
fclose(f);
s[0]=*temp;
for(i=0;i<strlen(temBiblioteka );i++){
s[i]=temp[i];
}
for(i=0;i<strlen(s);i++)
{
if(s[i]==' ')
num[26]++;
else if(s[i]>='a'&&s[i]<='z')
5.程序优点:
本程序可以打开文档进行统计,不必运行程序时重新输入文档,节省时间并且避免了一定的输入错误。
信息论实验终结报告
信源熵终结版#include<stdio.h>#include<math.h>void main(){int i,j,n,m,k,z;//定义整型变量float px[30],hx=0.0,hy=0.0,hx_y=0.0,hy_x=0.0,hxy=0.0,Ix_y=0.0,Iy_x=0.0;//定义浮点型变量,包括数组float py_x[30][30],py[30]={0},pxy[30][30],px_y[30][30];printf("请输入X的个数n:\n");//输入信源个数scanf("%d",&n);printf("请分别输入p(x):\n");//输入信源各概率for(i=0;i<n;i++)scanf("%f",&px[i]);printf("请输入Y的个数m:\n");//输入信宿个数scanf("%d",&m);printf("请分别输入py_x:\n");//分别输入P(y/x)值for(k=0;k<m;k++) //以矩阵形式输入{printf(" y%d",k+1);}for(i=0;i<n;i++){printf("\nx%d ",i+1);for(j=0;j<m;j++){scanf("%f",&py_x[j][i]);}}for(i=0;i<n;i++)//计算联合概率for(j=0;j<m;j++)pxy[i][j]=px[i]*py_x[j][i];for(j=0;j<m;j++)//计算Y的概率for(i=0;i<n;i++)py[j]+=pxy[i][j];for(i=0;i<n;i++)//计算X的后验概率for(j=0;j<m;j++)px_y[i][j]=pxy[i][j]/py[j];printf("****1信源熵2条件熵3联合熵4交互熵****\n");printf("**********输入所需计算的熵值********\n");scanf("%d",&z);while(1){ if(z==1){ float hx=0,hy=0;for(i=0;i<n;i++)//求信源熵hx=hx-px[i]*(log(px[i])/log(2));for(j=0;j<m;j++)hy=hy-py[j]*(log(py[j])/log(2));printf("信源熵hx=%f",hx);//输出各个所求printf("\n信源熵hy=%f",hy);}else if(z==2){ float hx_y=0,hy_x=0;for(i=0;i<n;i++)//求条件熵for(j=0;j<m;j++)hy_x+=-(pxy[i][j]*log(py_x[j][i])/log(2));for(i=0;i<n;i++)for(j=0;j<m;j++)hx_y+=-(pxy[i][j]*log(px_y[i][j])/log(2));printf("\n条件熵hx_y=%f",hx_y);printf("\n条件熵hy_x=%f",hy_x);}else if(z==3){ float hxy=0;for(i=0;i<2;i++)//求联合熵for(j=0;j<2;j++)hxy+=-(pxy[i][j]*log(pxy[i][j])/log(2));printf("\n联合熵hxy=%f",hxy);}else if(z==4){ float Ix_y=0,Iy_x=0;float hx=0,hy=0;float hx_y=0,hy_x=0;for(i=0;i<n;i++)//求信源熵hx=hx-px[i]*(log(px[i])/log(2));for(j=0;j<m;j++)hy=hy-py[j]*(log(py[j])/log(2));for(i=0;i<n;i++)//求条件熵for(j=0;j<m;j++)hy_x+=-(pxy[i][j]*log(py_x[j][i])/log(2));for(i=0;i<n;i++)for(j=0;j<m;j++)hx_y+=-(pxy[i][j]*log(px_y[i][j])/log(2));Ix_y=hx-hx_y;Iy_x=hy-hy_x;//交互熵printf("\n交互熵Ix_y=%f",Ix_y);printf("\n交互熵Iy_x=%f\n",Iy_x);}else if(z<1||z>4){ printf("输入错误,请输入1到4之间的数\n");}printf("\n****1信源熵2条件熵3联合熵4交互熵****\n");printf("**********输入所需计算的熵值********\n");scanf("%d",&z);}}#include<stdio.h>#include<math.h>void main(){int n,i,j;float t;float a[10];//符号概率;float b[10];//累加概率;float c[10];//-log(a[i]);int d[10];//码字长度;int m[10][10];//存码字;printf("请输入消息符号个数:");scanf("%d",&n);printf("\n");printf("请输入各个消息符号所对应的概率:\n"); for(i=0;i<n;i++){scanf("%f",&a[i]);}printf("\n");/*排序*/for(j=0;j<n;j++)for(i=0;i<n-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("按概率从大到小排序后为:\n");for(i=0;i<n;i++)printf("%f ",a[i]);printf("\n");printf("\n");/*求累加概率*/for(i=0;i<n-1;i++){b[i+1]=a[i]+b[i];}printf("累加概率为:");for(i=0;i<n;i++)printf("%f ",b[i]);printf("\n");printf("\n");/*求概率的对数*/for(i=0;i<n;i++){c[i]=(float) (-1)*log((float) a[i])/log((float)2);}printf("I(a[i])为:");for(i=0;i<n;i++)printf("%f ",c[i]);printf("\n\n");/*求码字长度*/for(i=0;i<n;i++){if((int)c[i]==c[i]){d[i]=(int)c[i];}if((int)c[i]!=c[i])d[i]=(int)c[i]+1;}printf("码字长度分别为:");for(i=0;i<n;i++)printf("%d ",d[i]);printf("\n\n");/*求码字*/printf("码字为:\n");for(i=0;i<n;i++){for(j=0;j<d[i];j++){b[i]=b[i]*2;m[i][j]=(int)(b[i]);if(m[i][j]==1)b[i]=b[i]-1;printf("%d",m[i][j]);}printf(" ");}printf("\n");}。
信息论实验报告
桂林理工大学实验报告班级:通信09-2班学号:3090731219 姓名:崔泽实验名称:计算离散信源的熵日期:2011年5月10日一、实验目的1、熟悉离散信源的特点2、熟悉离散信源平均信息量的计算方法二、实验内容1、写出计算自信息量的Matlab程序2、写出计算离散信源平均信息量的Matlab程序3、掌握二元离散信源的最大信息量与概率的关系4、完成习题三、习题1、程序:x=[0.5 0.25 0.125 0.125 ];y=[0.875 0.125];b=-x.*log2(x)H1=sum(b)c=-y.*log2(y)H1=sum(c)X=-log2(x)Y=-log2(y)程序运行结果:b = 0.5000 0.5000 0.3750 0.3750H1 =1.7500c = 0.1686 0.3750H1 = 0.5436X = 1 2 3 3Y =0.1926 3.0000由上面结果可以看出,甲信源的熵为: 1.7500已信源的熵为:0.5436甲地各种天气的信息量晴,云,大雨,小雨分别为1 2 3 3已地各种天气的信息量晴,小雨分别为0.1926 3.00002、Matlab程序:x=[1/4 1/8 1/8 3/16 5/16];a=-x.*log2(x);H=sum(a)程序运行结果:H = 2.22723、Matlab程序:X=[1/4 1/8 1/8 1/2];a=-x.*log2(x);H=sum(a)程序运行结果:H = 1.75003、Matlab程序:p=0.00011:0.1:0.99999;x=[p,1-p];a=-x.*log2(x);H=sum(a)plot(x,a)pHH = 7.0879当p呈等概率分布时,平均信息量达到最大值7.0879桂林理工大学实验报告班级:通信09-2班学号:3090731225 姓名:崔泽实验名称:离散信道德平均互信息及其信道容量的计算日期:2011年5月20日一、实验目的1、了解信道传输概率的状态图和信道转移概率的矩阵的特点2、了解什么是信道容量和最佳输入概率分布3、熟悉计算平均互信息和信道容量的计算步骤二、实验内容1、写出计算互信息和平均互信息的Matlab程序2、写出计算几种特殊离散信道的信道容量的Matlab程序3、完成习题三、习题1、Matlab程序:w=0.01:0.1:0.99;a1=log2(0.8./(0.6.*w+0.2));a2=log2(0.2./((-0.6).*w+0.8))I=0.8.*w.*a1+0.2.*(1-w).*a2+0.2.*w.*a2+0.8.*(1-w).*a1plot(w,I)程序运行结果:Imax=1.1681;即 C=1.1681;2、(1)原理:C=logr Matlab程序:r=3;c=log2(r)运算结果:c =1.5850(2)原理:C=log2(s)Matlab程序:S=2;C=log2(s)运行结果:C=1(3)原理:C=log2(s)-H(p1,p2,…,ps); Matlab程序:s=4;c=log2(s)+2/3*log2(1/3)+1/3*log2(1/6) 运行结果:c =0.0817(4)4、一般信道,其信道矩阵为:111244121636113884P⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦桂林理工大学实 验 报 告班级:通信09-2班 学号:3090731225 姓名:崔泽 实验名称:有噪信道编码定理 日期:2011年5月30日一、实验目的1、理解有噪信道编码定理的物理意义2、熟悉 Matlab 编程二、实验内容1、学习应用有噪信道编码定理解决实际问题2、将程序在计算机上仿真实现,验证程序的正确性3、完成习。
离散信源熵信道容量实验报告
计算离散信源熵、离散信道容量1 实验任务和目的实验任务:(1)简要总结信源的熵、信道容量的物理意义,概念;(2)写出离散信源熵、离散信道容量计算的基本步骤,画出实现离散信源熵、离散信道容量计算的程序流程图;(3)讨论信源的熵的大小与前后符号之间相关性的关系,讨论信道容量与信源先验概率及信道转移概率的关系。
实验目的:掌握信源的熵、信道容量的物理意义,概念;熟练掌握离散信源熵、离散信道容量的计算方法步骤;利用Matlab 编写离散信源熵、离散信道容量的计算程序;验证程序的正确性。
2 实验过程和结果 2.1 实验过程1、简要总结信源的熵、信道容量的物理意义,概念。
信源熵的物理意义是指信源中的各个符号的平均不确定性;熵是信源符号的平均信息量,是信源符号的平均不确定度。
信道容量 概念:在信道可以传输的基本前提下,对信源的一切可能的概率分布而言,信道能够传输的最大(接收)熵速率称为信道容量。
意义:求出了某个信道的信道容量,也就找到了信源的最佳概率分布。
从而指导人们改造信源,使之最大可能地利用信道的传输能力。
2、写出离散信源熵、离散信道容量计算的基本步骤,画出实现离散信源熵、离散信道容量计算的程序流程图;离散信源熵的计算步骤:()()()11log log ()qr r r i i i i H X E p a a p a =⎛⎫==- ⎪⎝⎭∑信道容量的计算步骤:()(){}()符号/;max bit Y X I C XP =3、(1)讨论信源的熵的大小与前后符号之间相关性的关系,讨论信道容量与信源先验概率及信道转移概率的关系。
信源的相关性是信源符号间的依赖程度的度量。
由于信源输出符号间的依赖关系也就是 信源的相关性使信源的实际熵减小。
信源输出符号间统计约束关系越长,信源的实际熵越小。
当信源输出符号间彼此不存在依赖关系且为等概率分布时,信源的实际熵等于最大熵。
(2)信道容量与信源先验概率及信道转移概率的关系。
信息论实验报告(实验四、哈夫曼编码)
3、把这个合成概率看成是一个新组合符号地概率,重复上述做法直到最后只剩下两个符号概率为止;
4、完成以上概率顺序排列后,再反过来逐步向前进行编码,每一次有二个分支各赋予一个二进制码,可以对概率大的赋为零,概率小的赋为1;
5、从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。
“1”,小的概率赋“0”。
(3)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。
(4)计算码字的平均码长得出最后的编码效率。
五、实验数据记录
六、实验结论与心得
通过本次实验,加强了对matlab程序的学习,进一步提高了我的编程能力。
如有侵权请联系告知删除,感谢你们的配合!
学生实验报告
院别
电子工程学院
课程名称
信息论与编码
班级
实验名称
实验四、哈夫曼编码
姓名
实验时间
学号
指导教师
成绩
报 告 内 容
一、实验目的和任务
1、理解信源编码的意义;
2、熟悉MATLAB程序设计;
3、掌握哈夫曼编码的方法及计算机实现;
4、对给定信源进行香农编码,并计算编码效率;
二、实验原理介绍
1、把信源符号按概率大小顺序排列,并设法按逆次序分配码字的长度;
三、实验设备介绍
1、计算机
2、编程软件MATLAB6.5以上
四、实验内容和步骤
对如下信源进行哈夫曼编码,并计算编码效率。
(1)计算该信源的信源熵,并对信源概率进行排序
(2)首先将出现概率最小的两个符号的概率相加合成一个概率,把这个合成概率与其他的概率进行组合,得到一个新的概率组合,重复上述做法,直到只剩下两个概率为止。之后再反过来逐步向前进行编码,每一次有两个分支各赋予一个二进制码。对大的概率赋
信息论实验报告
一、实验目的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 之间的依赖程度越高时,互信息越大。
信源熵的计算
桂林电子科技大学数学与计算科学学院实验报告 实验室: 实验日期: 2010年 11月 11日院(系) 数学与计算科学学院 年级、专业、班 0800710310 姓名 何帅 成绩课程名称 信息与编码 实验项目名 称 信源熵的计算 指导教师一 实验目的1、掌握香农编码的原理2、掌握二进制小数的输出方法二 实验内容与步骤Shannon 码编码步骤为:1、将信源S 的所有符号按概率从大到小排列:12q P P P ≥≥≥ 2、对第i 个信源符号i s 取整数码长[]1log 1,i i l P ⎡⎤=+⎢⎥⎣⎦为取整运算 3、计算累加概率111,0,(2)i i i k k R R R P i -===≥∑ 4、将i R 变换成二进制数12j i j j R x ∞-==∑,并按步骤2中计算的长度i l 取i R 的二进制系数j x ,组合起来即为i s的香农码字i W 程序:#include<stdio.h>#include<iostream.h>#include<math.h>double P[6]={0.25,0.1,0.2,0.25,0.15,0.05},Pax[6],machang[6];void main(){double temp;for(int a=1;a<6;a++){for(int i=0;i<6-a;i++)if(P[i]<P[i+1]){temp=P[i];P[i]=P[i+1];P[i+1]=temp;}}for(int i=0;i<6;i++)cout<<P[i]<<" ";cout<<endl;for(i=0;i<6;i++){Pax[0]=0.0;Pax[i+1]=Pax[i]+P[i];}cout<<"概率累加和为:"<<endl;for(i=0;i<6;i++)cout<<Pax[i]<<" ";cout<<endl;for(i=0;i<6;i++){double m=log(1/P[i]/log(2));if(m-int(m)==0)machang[i]=log(1/P[i])/log(2);elsemachang[i]=int(m)+1;cout<<P[i]<<"的码长为:"<<machang[i]<<endl;}for(i=0;i<6;i++){for(int j=0;j<machang[i];j++){int n=int(Pax[i]*2);cout<<n;if((Pax[i]*2-1)>0){Pax[i]=Pax[i]*2-1;continue;}if((Pax[i]*2-1)==0)Pax[i]=Pax[i]*2-1;elsePax[i]=Pax[i]*2;}cout<<endl;}}运行结果:三实验体会心得通过本次实验学习了求香农编码的基本步骤,同时学习了如何在C++下实现,在编程中主要是注意求二进制数是通过乘2取整得到的。
实验一_信息熵与图像熵计算_正确
实验一信息熵与图像熵计算(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. 掌握霍夫曼编码中信息熵的定义、性质和计算;2. 掌握霍夫曼编码中平均码字长度的定义和计算;3( 掌握霍夫曼编码中编码效率的定义和计算;4. 正确使用C语言实现霍夫曼编码中信息熵、平均码长和编码效率的求取。
二、实验内容1. 熟练列出霍夫曼编码中信息熵、平均码长和编码效率各自的计算公式;2. 正确使用C语言实现计算霍夫曼编码中信息熵、平均码长和编码效率的程序,并在Visual C++环境中验证。
三、实验原理1. 霍夫曼编码的基本原理按照概率大小顺序排列信源符号,并设法按逆顺序分配码字字长,使编码的码字为可辨识的。
2. 平均码长:L=?p(s)*l(单位为:码符号/信源符号) ii其中,p(s)为信源s在q个信源中出现的概率,l为信源s的二进制霍夫曼iiii编码。
3. 信息熵:H(S)=- ?p(s) *log p(s) (单位为:比特/信源符号) i2i其中,p(s)为信源s在q个信源中出现的概率。
ii4. 编码效率:η= H(S)/ L其中,H(S)为信息熵,L为平均码长。
四、实验步骤:1. Huffman编码示例如下图:信源符号概率信源缩减过程编码码长00 0 S1 0.4 0.4 0.4 0.6 00 2 1 0000 1 S2 0.2 0.2 0.4 0.4 10 2 01 1010 01 S3 0.2 0.2 0.2 11 2 11010 11 S4 0.15 0.2 010 3011 S5 0.05 011 3 2. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中信息熵的程序的编写,并在Visual C++环境中验证;3. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中平均码长的程序的编写,并在Visual C++环境中验证;4. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中编码效率的程序的编写,并在Visual C++环境中验证;实验程序:/*********** 霍夫曼编码信息熵、平均码长及编码效率的计算 ************ //按照实验步骤的要求完成程序,正确计算霍夫曼编码的信息熵、 //平均码长以及编码效率,并通过printf函数将三者的计算结果 //打印出来#include<stdio.h>#include<string.h>#include<math.h>#define CH_Num 5 //信源符号个数//主函数void main(){//编程1:定义double型数组gailv存放各信源符号出现的概率double gailv[CH_Num]={0.4,0.2,0.2,0.15,0.05};//编程2:定义int型数组code_len存放各信源符号的霍夫曼编码int code_len[CH_Num]={2,2,2,3,3};//编程3:定义double型变量aver_Len、Hs和code_ratio,分别//对应信息熵、平均码长及编码效率,并初始化为0double aver_Len=0,Hs=0,code_ratio=0;int i;//编程4:利用for循环计算平均码长aver_Lenfor(i=0;i<CH_Num;i++)aver_Len+=gailv[i]*code_len[i];//编程5:利用for循环计算信息熵Hsfor(i=0;i<CH_Num;++i)Hs+=-(gailv[i]*(log(gailv[i])/log(2)));//编程6:计算编码效率code_ratiocode_ratio=Hs/aver_Len;//编程7:利用三条printf语句分别打印平均码长、信息熵和编码效率printf("平均码长=%lf 比特/信源符号\n",aver_Len);printf("信源熵=%lf 码符号/信源符号\n",Hs);printf("编码效率=%lf\n",code_ratio); }运行结果如下图:实验心得:通过本次试验加深了对霍夫曼编码的基本原理的理解以及计算公式的记忆。
关于信源熵的实验报告
实验报告实验名称关于信源熵的实验课程名称信息论与编码姓名xxx 成绩90班级电子信息1102学号0909112204日期2013.11.22地点综合实验楼实验一MATLAB完成离散信源熵的计算一、实验目的1. 通过信息论与编码学理论,掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作和基本工具以及使用,掌握利用matlab求解信息熵的原理和方法。
3. 练习使用matlab 求解信源的信息熵。
自学图像熵的相关概念,并应用所学知识,使用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) = - p*logp–q*logq = - p*logp –(1 - p)*log(1- p)即:H (p) = - p*logp –(1 - p)*log(1- p) 其中 0 ≤ p ≤13.MATLAB二维绘图用matlab 中的命令plot( x , y) 就可以自动绘制出二维图来。
例:在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) 输入一个离散信源,并检查该信源是否是完备集。
信息论编码实验一熵的计算
实验一 熵的计算一、 实验目的通过本次实验的练习,使学生进一步巩固熵的基本概念,掌握熵的统计方法,培养学生使用编程工具进行分析计算的基本能力。
二、 实验仪器与软件1. PC 机1台2. MATLAB7.0环境三、实验原理1. 信息熵的基本原理离散信源数学模型如下(设该信源可能取的符号有n 个):⎭⎬⎫⎩⎨⎧=⎥⎦⎤⎢⎣⎡)(,),(,),(),( ,, , , , )( 2121n i n i a p a p a p a p a a a a X P X则该信源的信息熵为:)(log )()(21i ni i x p x p X H ∑==H(X)是信源X 中每个事件出现的平均信息量,或者说H(X)表示了信源X 中各符号出现的平均不确定性。
● 图像的信息熵:设数字图像的灰度级集合为{r 1,r 2,…,r m },其对应的概率分别为p (r 1),p (r 2),…,p (r m ),则图像的信息熵可以定义为:图像的信息熵表示像素各个灰度级位数的统计平均值,它给出了对此输入灰度级集合进行无失真图像编码时所需要的平均位数的下限。
2. 图像文件的读取● 函数imread () MATLAB 通过函数imread 完成图像的读取,该函数语法格式如下:I = imread(filename,fmt)用于读取由filename 指定的图像数据到数组A 中,参数fmt 对应于所有图像处理工具所支持的图像文件格式。
如I=imread ('rice.tif');● 函数imhist () 显示图像的直方图 用法: imhist(I,n) 计算和显示图像I 的直方图,n 为指定的灰度级数目,默认为256。
如果I 是二值图像,那么n 仅有两个值。
[counts,x] = imhist(I) 返回直方图数据向量counts 或相应的色彩值向量x 。
● 函数size(a) 表示矩阵a 每个维度的长度 如size([1 2 3;4 5 6]),返回[2 3],表示该矩阵有2行3列 ● find ()寻找非零元素下标 如:x = [11 0 33 0 55]; find(x) ans = 1 3 5 find(x == 0)ans = 2 4 ● 相关函数 点运算 在MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。
熵函数实验报告
一、实验目的1.掌握MATLAB 软件的使用,以及其设计流程;2.掌握熵函数的实现方法;3.用MATLAB 语言设计熵函数的实现方法。
二、实验仪器或设备装MATLAB 软件的微机一台 三、总体设计 (一) 设计原理信源熵是信源不确定度的一个度量,其表示式如下1()()log ()ni i i H X p x p x ==-∑(二) 设计流程图1 流程图 四、实验步骤(包括主要步骤、代码分析等) (一)主要步骤1.打开MATLAB 集成调试软件2.单击“File ”-“New ”,新建一个.M 文件,命名为“h ”。
3.保存后运行。
4.在MATLAB 的主窗口输入p=[0.2 0.3 0.5]按Enter 后,输入H(p)再按Enter ,即可出现实验结果。
5.观察到实验结果为ans =1.48556.并分析实验结果 (二)主要代码分析function H=H(p)if((p>=0)&(p<=1)) %如果01p ≤≤,执行下列语句 P0=sum(p); %P0为各概率之和if (P0==1) %如果P0=1执行下列语句 H=-sum(p.*log2(p)); elsedisplay('defult') %P0为各概率之和不为1,输出defult end elsedisplay('defult') %如果不是01p ≤≤,输出defult end五、结果分析与总结通过本次实验,我进一步理解了熵函数的意义,通过MATLAB 编程,我进一步理解了熵函数的是对信源不确定度的度量。
但是,我发现自己在MATLAB 编程上还存在很大的欠缺,以后要加强在这方面的练习。
教师签名:年 月 日。
信息论实验报告实验1
信息论实验报告一实验一1、实验内容(1)英文信源由26个英文字母和1个空格组成,假定字符从中等概选取,那么一条100个字符的信息提供的信息量为多少?(2)若将27个字符分为三类,9个出现概率占2/7,13个出现概率占4/7,5个出现占1/7,而每类中符号出现等概,求该字符信源的信息熵。
2、设计思路及步骤I=log2P iH(X)=∑−P i log2Pii26个字母和一个空格,因等概选取可以先求得其中一个字符的信息量,通过扩展实现计算100个字符的信息量。
对于第二问,可以将字符分为三组,又因每组字符的概率相等,因此可以求出每组每一个字符的概率。
通过信息熵的定义可以求出结果。
3、程序代码及调试过程4、出现的问题及解决方法(1)没有看清题目要求,漏掉空格(2)是否可以将三组字符看作整体5、结果及说明通过实验结果可以看出100个字符的信息量,以及字符信源熵。
比较H2与H3可以看出,并不可以简单的将三组数据看作整体。
6、实验总结本实验通过计算多字符的信息量与分组信息熵,让我们加深了信息论中有关信息量与信息熵的概念与定义,同时也让我们熟悉了matlab的基本操作。
实验二1、实验内容绘制二进制信源熵函数曲线。
2、设计思路及步骤根据信源熵的定义以及公式计算出熵,通过matlab的矩阵运算计算出熵数组,然后通过plot函数画出图像。
3、程序代码及调试过程4、出现的问题及解决方法矩阵乘法出错,,需要使用matlab中的点乘5、结果及说明信源熵的图像为凸形曲线,熵在信源等概分布时取最大值,先增大再减小。
6、实验总结本实验通过对信源熵的作图让我们熟悉了matlab中图像生成函数,以及矩阵运算。
实验三,四1、实验内容求信源的熵和其二次、三次扩展信源的熵。
离散二维平稳信源的概率空间:求:(a)信源符号之间无依赖性时,信源X的信息熵H(X);(b)信源符号有依赖性时的条件熵H(X2|X1);(c)联合熵H(X1X2);(d)根据以上三者之间的关系,验证结果的正确性。
实验一:绘制信源熵函数曲线
信息与通信工程学院实验报告(软件仿真性实验)课程名称:信息论基础实验题目:绘制信源熵函数曲线指导教师:毛煜茹班级:15050541学号:19 学生姓名:王宇一、实验目的和任务掌握离散信源熵的原理和计算方法。
熟悉matlab软件的基本操作,练习应用matlab软件进行信源熵函数曲线的绘制。
理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意义。
二、实验内容及原理2.1实验内容:用matlab软件绘制二源信源熵函数曲线。
根据曲线说明信源熵的物理意义。
2.2实验原理:(1)离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号。
假定X是一个离散随机变量,即它的取值范围R={x1,x2,x3,…}是有限或可数的。
设第i个变量xi发生的概率为p i=P{X=x i}。
则:定义一个随机事件的自信息量I(x i)为其对应的随机变量x i出现概率对数的负值。
即:I(xi )= -log2p(xi)定义随机事件X的平均不确定度H(X)为离散随机变量x i出现概率的数学期望,即:∑∑-==i ii i i i x p x p x I x p X H )(log )()()()(单位为 比特/符号 或 比特/符号序列。
平均不确定度H (X )的定义公式与热力学中熵的表示形式相同,所以又把平均不确定度H (X )称为信源X 的信源熵。
必须注意以下几点:某一信源,不管它是否输出符号,只有这些符号具有某些概率特性,必有信源的熵值;这熵值是在总体平均上才有意义,因而是个确定值,一般写成H (X ),X 是指随机变量的整体(包括概率分布)。
信息量则只有当信源输出符号而被接收者收到后,才有意义,这就是给与信息者的信息度量,这值本身也可以是随机量,也可以与接收者的情况有关。
熵是在平均意义上来表征信源的总体特征的,信源熵是表征信源的平均不确定度,平均自信息量是消除信源不确定度时所需要的信息的量度,即收到一个信源符号,全部解除了这个符号的不确定度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称关于信源熵的实验课程名称信息论与编码姓名xxx 成绩90班级电子信息1102 学号0909112204日期2013.11.22 地点综合实验楼实验一MATLAB完成离散信源熵的计算一、实验目的1. 通过信息论与编码学理论,掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作和基本工具以及使用,掌握利用matlab求解信息熵的原理和方法。
3. 练习使用matlab 求解信源的信息熵。
自学图像熵的相关概念,并应用所学知识,使用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) = - p*logp–q*logq = - p*logp –(1 - p)*log(1- p)即:H (p) = - p*logp –(1 - p)*log(1- p) 其中 0 ≤ p ≤13.MATLAB二维绘图用matlab 中的命令plot( x , y) 就可以自动绘制出二维图来。
例:在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) 输入一个离散信源,并检查该信源是否是完备集。
2) 去除信源中符号分布概率为零的元素。
3) 根据平均信息量公式,求出离散信源的熵。
5.图像熵的相关知识图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。
图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi 表示图像中灰度值为i 的像素所占的比例,则定义灰度图像的一元灰度熵为:图像熵计算过程:1) 输入一幅图像,并将其转换成灰度图像。
2) 统计出图像中每个灰度阶象素概率。
3) 计算出一幅图像的一维熵。
6. Excel的绘图功能比如:用Excel或制作二元熵函数曲线。
具体步骤如下:1)启动Excel应用程序。
2)准备一组数据 p。
在 Excel的一个工作表的 A 列(或其它列)输入一组 p ,取步长为0.01 ,从0 至100 产生101 个p(利用Excel填充功能)。
3)使用 Excel的计算功能,在 B 列中用二元熵函数计算公式,求得 A 列中各数值对应的二元熵值。
比如:在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2)。
4)使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,绘制二元熵函数散点图。
三、实验内容1、使用matlab 软件绘制二元信源熵函数曲线,并说明其物理意义。
2、使用 matlab 软件求解离散单符号信源熵,请自己构造两个信源空间,根据求解结果说明其物理意义。
3、使用 matlab 软件计算图像一维图像熵,请自己选择任意两幅图像,根据求解结果说明其物理意义。
4、使用Excel软件,绘制二元信源熵函数曲线的散点图。
5、使用Excel软件,绘制(3)中两幅图像的灰度直方图(0 到255 各灰度占图像像素的比例值,使用柱状图绘制其比列分布)。
四、程序设计与算法描述(1)绘制二元信源熵函数曲线实验代码:p=0.00001:0.001:1;H=-(p).*log2(p)-(1-p).*log2(1-p);plot(p,H);实验结果如下:物理意义:(1)信源熵为信源的平均不确定性,而概率的大小决定了信息量的大小。
(2)由上图可知概率为1时,信息量最小,不确定性最低;概率等于0.5时熵最大。
(2)求解离散单符号信源熵程序代码:(1)X=[1 2 3 4 5 6]P=[1/6 1/6 1/6 1/6 1/6 1/6]H=6*(-(1/6)*log(1/6))(2)X=[0 1 2 3 4 5 6 7 8 9]P=[0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1] H=10*(-0.1)*log(0.1)实验结果如下所示:图1:计算结果表明了信源的平均不确定度。
图2:计算结果表明了信源的平均不确定度。
计算图像一维图像熵选择的两幅图像如下:实验代码如下:(1)filename='winter.jpg';imfinfo(filename)imgRgb=imread(filename);imshow(imgRgb);A=rgb2gray(imgRgb);figureimshow(A);imwrite(A,'winter1.jpg');[M,N]=size(A);p=zeros(256,1);for m=1:M;for n=1:N;if A(m,n)==0;i=1;elsei=A(m,n);endp(i)=p(i)+1;endendp=p./(M*N)result=0;for i=1:length(p)if p(i)==0;result=result;elseresult=result-p(i)*log2(p(i));endendresult(3)用Excel软件,绘制二元信源熵函数曲线的散点图取步长为0.01 ,从0 至100 产生101 个p各数值对应的二元熵值。
比如:在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2)。
使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,绘制二元熵函数散点图。
在Excel中的数据如下:0.01 0.0807930.02 0.1414410.03 0.1943920.04 0.2422920.05 0.2863970.06 0.327445 0.07 0.365924 0.08 0.402179 0.09 0.43647 0.1 0.468996 0.11 0.499916 0.12 0.529361 0.13 0.557438 0.14 0.584239 0.15 0.60984 0.16 0.63431 0.17 0.657705 0.18 0.680077 0.19 0.701471 0.2 0.721928 0.21 0.741483 0.22 0.760168 0.23 0.778011 0.24 0.79504 0.25 0.811278 0.26 0.826746 0.27 0.841465 0.28 0.855451 0.29 0.868721 0.3 0.881291 0.31 0.893173 0.32 0.904381 0.33 0.914926 0.34 0.924819 0.35 0.934068 0.36 0.942683 0.37 0.950672 0.38 0.958042 0.39 0.9648 0.4 0.970951 0.41 0.9765 0.42 0.981454 0.43 0.985815 0.44 0.989588 0.45 0.992774 0.46 0.995378 0.47 0.997402 0.48 0.998846 0.49 0.9997110.5 1 0.51 0.999711 0.52 0.998846 0.53 0.997402 0.54 0.995378 0.55 0.992774 0.56 0.989588 0.57 0.985815 0.58 0.981454 0.59 0.9765 0.6 0.970951 0.61 0.9648 0.62 0.958042 0.63 0.950672 0.64 0.942683 0.65 0.934068 0.66 0.924819 0.67 0.914926 0.68 0.904381 0.69 0.893173 0.7 0.881291 0.71 0.868721 0.72 0.855451 0.73 0.841465 0.74 0.826746 0.75 0.811278 0.76 0.79504 0.77 0.778011 0.78 0.760168 0.79 0.741483 0.8 0.721928 0.81 0.701471 0.82 0.680077 0.83 0.657705 0.84 0.63431 0.85 0.60984 0.86 0.584239 0.87 0.557438 0.88 0.529361 0.89 0.499916 0.9 0.468996 0.91 0.43647 0.92 0.402179 0.93 0.3659240.94 0.3274450.95 0.2863970.96 0.2422920.97 0.1943920.98 0.1414410.99 0.0807931 #NUM!所绘制图像如下:(5)用Excel软件,绘制(3)中两幅图像的灰度直方图实验步骤:先在MATLAB里面计算出(3)中各级灰度值的概率,(3)中的图像都是128*128的,灰度级有256个。
在Excel中做出柱状图。
0.00010.00010.0002 0.0004 0.0006 0.001 0.0016 0.0027 0.0035 0.006 0.0057 0.0069 0.0076 0.0084 0.0092 0.0101 0.011 0.0118 0.0121 0.013 0.0131 0.0139 0.0137 0.0147 0.0142 0.0147 0.0151 0.0147 0.0152 0.0157 0.0152 0.0159 0.0163 0.0165 0.0166 0.0168 0.0173 0.0174 0.018 0.0176 0.0184 0.0179 0.0176 0.018 0.01740.0169 0.0163 0.0155 0.015 0.0144 0.0141 0.0132 0.0127 0.0119 0.0115 0.0105 0.01 0.0096 0.0088 0.0083 0.0079 0.0075 0.0068 0.0063 0.006 0.0056 0.0051 0.005 0.0046 0.0043 0.0041 0.0039 0.0035 0.0033 0.0033 0.0031 0.0031 0.003 0.0027 0.0026 0.0026 0.0025 0.0024 0.0024 0.0024 0.0025 0.0024 0.00250.0023 0.0023 0.0022 0.0023 0.0021 0.0021 0.0022 0.0021 0.0021 0.0021 0.002 0.002 0.002 0.002 0.002 0.002 0.0019 0.0019 0.0019 0.0019 0.0019 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0019 0.0018 0.0018 0.0017 0.0017 0.0017 0.0016 0.0017 0.0016 0.0016 0.0016 0.0016 0.0017 0.0016 0.0015 0.00160.0015 0.0016 0.0015 0.0015 0.0015 0.0015 0.0016 0.0015 0.0015 0.0014 0.0015 0.0014 0.0015 0.0014 0.0014 0.0013 0.0013 0.0013 0.0013 0.0014 0.0013 0.0013 0.0013 0.0013 0.0012 0.0013 0.0011 0.0011 0.0012 0.0012 0.0011 0.0011 0.0011 0.0011 0.001 0.0011 0.001 0.001 0.001 0.0009 0.001 0.0009 0.0010.001 0.0009 0.001 0.0009 0.0009 0.0008 0.0009 0.0009 0.0008 0.0008 0.0008 0.0008 0.0007 0.0007 0.0007 0.0008 0.0007 0.0007 0.0007 0.0006 0.0006 0.0007 0.0006 0.0006 0.0006 0.0005 0.0006 0.0005 0.0005 0.0005 0.0004 0.0004 0.0005 0.0004 0.0004 0.0004 0.0004 0.0004 0.0003 0.0003 0.0004 0.0003 0.00030.00020.00020.00020.00020.00020.00020.00020.00010.00010.00010.00010.00010.00010.0001得到下图所示柱状图:实验结果分析:由图灰度直方图可以看出,图片灰度级主要分布在22到190内,而对应其图片可知,图像中灰度值较低的部分占图像中大半部分,灰度值偏中部分占较小部分,暗黑部分和安灰部分出现明显差异,在灰度直方图中表现为出现图片熵值突变的结果,因此统计结果完全正确。