实验1_信息论相关实验实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息论与编码实验一实验报告
学生姓名周群创
指导教师张祖平
学号0909110814
专业班级电子信息1101
实验一关于信源熵的实验
一、实验目的
1. 掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。
3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。
4. 掌握Excel 的绘图功能,使用Excel 绘制散点图、直方图。
二、实验原理
1. 离散信源相关的基本概念、原理和计算公式
产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。
随机事件的自信息量I(x i)为其对应的随机变量x i 出现概率对数的负值。即:
I(x i)= -log2 p(x i)
随机事件X 的平均不确定度(信源熵)H(X)为离散随机变量x i 出现概
率的数学期望,即:
H(X )=-∑p(x )I (x ) =-∑p(x ) log p(x )
2. 二元信源的信息熵
设信源符号集X={0,1},每个符号发生的概率分别为p(0)=p,p(1)=q,
p+ q=1,即信源的概率空间为
则该二元信源的信源熵为:
H(X) = - p log p –q log q = - p log p – (1- p) log (1- p)
即:H (p) = - p log p – (1- p) log (1- p) 其中0 ≤p ≤1
3. 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) 输入一个离散信源,并检查该信源是否是完备集。
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 软件绘制二元信源熵函数曲线,并说明其物理意义。
其程序源代码为:
p=0:0.01:1;
H=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,H);
结果为:
因为信源熵表征信源的平均不确定度,而由图表可以看出,当二元信源的符号的发生概率越高或越低时,信源的不确定性越低,反之,则不确定性越高。
2、使用matlab 软件求解离散单符号信源熵,请自己构造两个信源空间,根据求解结果说明其物理意义。
代码
p=[0.1 0.2 0.3 0.4];
h=-p.*log2(p);
H=sum(h);
p
H
结果
3、使用matlab 软件计算图像一维图像熵,请自己选择任意两幅图像,根据求解结果说明其物理意义。
其源代码程序为:
filename = 'e:\IMG_20131013_230501.jpg';
image1 = imread(filename);
subplot(2,1,1);
imshow(image1,[]);
subplot(2,1,2);
A = rgb2gray(image1);
imshow(A,[]);
[x,y]=size(A);
img_size=x*y;
H_img=0;
B=zeros(256,1);
for i=1:x
for j=1:y
img_level=A(i,j)+1;
B(img_level)=B(img_level)+1;
end
end
for k=1:256
p(k)=B(k)/img_size
if p(k)~=0;
H_img=-p(k).*log2(p(k))+H_img;
end
end
H_img
结果为: