信息论与编码-实验报告

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

信息论与编码实验报告

题目:关于信源熵的实验

学院:信息科学与工程学院

专业班级:电子信息工程1002班

指导老师:**

学号: **********

*名:***

2012 年12 月

一、实验目的

1.掌握离散信源熵的原理和计算方法。

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

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

求解图像熵。

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

二、实验原理

1.离散信源相关的基本概念、原理和计算公式

产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。

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

即:

I(xi)= -log2 p(xi)

随机事件 X的平均不确定度(信源熵)H(X)为离散随机变量 xi出现概率的数学期望,即:

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 软件绘制二元信源熵函数曲线,并说明其物理意义。

实验结果:

物理意义:信源熵为信源的平均不确定性,而概率的大小决定了信息量的大小。由图上可知概率为1时,信息量最小,不确定性最低;概率等于0.5时熵最大。

源代码:

p=0.00001:0.001:0.99999;

h=-p.*log2(p)-(1-p).*log2(1-p);

plot(p,h);

title('二进制熵函数曲线');

ylabel('H(p,1-p)')

2.

源代码:p1=[1/3,1/5,1/5,4/15]; %代表甲信源对应的概率p2=[7/8,1/8]; %代表乙信源对应的概率

H1=0.0;

H2=0.0;

I=[];

J=[];

for i=1:4

H1=H1+p1(i)*log2(1/p1(i));

I(i)=log2(1/p1(i));

end

disp('自信息量分别为:');

I

disp('H1信源熵为:');

H1

for j=1:2

H2=H2+p2(j)*log2(1/p2(j));

J(j)=log2(1/p2(j));

end

disp('自信息量分别为:');

J

disp('H2信源熵为:');

H2

3:

源代码:clear all;

close all;

fid=fopen('lena.img','r');

A=fread(fid,[256,256],'uint8'); fclose(fid);

subplot(1,2,1);

imshow(A,[]);

[M,N]=size(A);

A_size=M*N;

L=256;

H1=0;

p=zeros(L,1);

fid=fopen('fing_128.img','r');

B=fread(fid,[128,128],'uint8'); fclose(fid);

subplot(1,2,2);

imshow(B,[]);

[M,N]=size(B);

B_size=M*N;

L=256;

H2=0;

p=zeros(L,1);

%对图像的灰度值在[0,255]上做统计for m=1:M;

for n=1:N;

if A(m,n)==0;

i=1;

else

i=A(m,n);

end

p(i)=p(i)+1;

end

end

p=p./(M*N);

%由熵的定义做计算

result=0;

for i=1:length(p)

if p(i)==0;

result=result;

else

result=result-p(i)*log2(p(i));

end

end

result

相关文档
最新文档