实验1_信息论相关实验实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

结果为:

相关文档
最新文档