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