信息论实验报告.docx
- 文档编号:23837800
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:13
- 大小:190.41KB
信息论实验报告.docx
《信息论实验报告.docx》由会员分享,可在线阅读,更多相关《信息论实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
信息论实验报告
哈尔滨理工大学
实验报告
课程名称:
信息论基础
学院:
自动化
专业班级:
电技12-3
学生姓名:
樊晓晨
学号:
1212020303
指导教师:
刘燕
实验一
课程名称
信息论基础
时间
2014-10-15
实验名称
信息熵的计算
地点
B302
姓名
樊晓晨
学号
1212020303
班级
电技12-3
同实验者
学号
班级
一.实验目的:
通过本次实验的练习,使学生进一步巩固信息熵的基本概念,掌握信息熵的统计方法,培养学生使用编程工具进行分析计算的基本能力。
二.实验内容:
(1)计算图像的信息熵
基于一幅已知图像,读取该图像信息,并通过统计该图像的像素值计算各个像素值出现的概率,进而得到该图像的信息熵。
(2)多个信源比较
对多个不同图像源进行上述操作,从物理意义上对这些图像的信源熵进行比较分析,得出结论
三.实验结果分析:
1.图像一:
H=7.1750比特/符号
2.图像二:
H=6.4774
3.图像三:
H=6.4129比特/符号
4.matlab程序:
I=imread('03.jpg');
S=rgb2gray(I);
imshow(S)
[a,b]=size(S);
C=a*b;
[x,y]=imhist(S);
figure
imhist(S);
xlabel('XÖá');
ylabel('YÖá');
p=x(find(x))./C
H=-sum(p.*log2(p))
5.实验结论与心得:
通过此次试验可以得出如下结论:
a.图像色调越深,信息熵就越大;
b.图2和图三灰度图看起来有点类似,计算出的信息熵用近似,通过对比两幅图的熵函数图像也可以看出两幅图相近。
c.通过这次试验,加深了对所学知识的理解和掌握,并能加以应用,这才是学习的目的所在。
成绩评定:
指导教师:
年月日
实验二
课程名称
信息论基础
时间
2014-11-21
实验名称
信道容量的迭代计算
地点
B302
姓名
樊晓晨
学号
1212020303
班级
电技12-3
同实验者
邹环宇
学号
1212020331
班级
电技12-3
一.实验目的:
本次实验的练习,使学生进一步巩固信息容量的基本概念,掌握信息容量的迭代计算的基本原理和方法,培养学生使用编程工具进行分析计算的基本能力。
二.实验内容:
1.用matlab软件编程实现一般信道容量迭代算法;
2.设定不同的信道分别计算其信道容量(至少选择以下两个信道);
,
,
3.设定不同的迭代精度分别求解器信道容量(至少两种精度).
三.实验结果分析:
1.结果一:
输入信源个数3
输入信宿个数2
输入信道容量的精度:
0.005
输入信道转移矩阵P:
[0.10.50.4;0.60.20.2]
P=0.10000.50000.4000
0.60000.20000.2000
原始信源分布:
ans=0.50000.5000
迭代次数:
k=1
最大信道容量时的信源分布:
p=0.50940.4906
2.结果二:
输入信源个数2
输入信宿个数2
输入信道容量的精度:
0.0006
输入信道转移矩阵P:
[0.980.02;0.050.95]
P=0.98000.0200
0.05000.9500
原始信源分布:
ans=0.50000.5000
迭代次数:
k=1
最大信道容量时的信源分布:
p=0.51120.4888
3.结果三:
输入信源个数3
输入信宿个数2
输入信道容量的精度:
0.008
输入信道转移矩阵P:
[0.20.10.7;0.30.40.3]
P=0.20000.10000.7000
0.30000.40000.3000
原始信源分布:
ans=0.50000.5000
迭代次数:
k=1
最大信道容量时的信源分布:
p=0.50250.4975
4.MATLAB程序:
clear;
r=input('输入信源个数');
s=input('输入信宿个数');
deta=input('输入信道容量的精度:
');
Q=rand(r,s);
A=sum(Q,2);
B=repmat(A,1,s);
P=input('输入信道转移矩阵P:
')
[r,s]=size(P);
fori=1:
r
if(sum(P(i,:
))~=1)
error('概率转移矩阵输入有误!
!
')
return;
end
forj=1:
s
if(P(i,j)<0||P(i,j)>1)
error('概率转移矩阵输入有误!
!
')
return;
end
end
end
i=1:
1:
r;
p(i)=1/r;
disp('原始信源分布:
')
p(i)
E=repmat(p',1,s);
fork=1:
1:
1/deta
m=E.*P;
a=sum(m);%把得到的矩阵m每列相加之和构成一行
su1=repmat(a,r,1);%把得到的行矩阵a复制r行,成一新矩阵sul,后验概率的分母部分
t=m./su1;%后验概率矩阵
n=exp(sum(P.*log(t),2));%信源分布的分子部分
su2=sum(n);%信源分布的分母部分
p=n/su2;%信源分布E=repmat(p,1,s);
C(k+1)=log(sum(exp(sum(P.*log(t),2))))/log
(2);
kk=abs(C(k+1)-C(k))/C(k+1);
if(kk<=deta)
break;
end
disp('迭代次数:
k='),disp(k)
end
disp('最大信道容量时的信源分布:
p='),disp(p')
成绩评定:
指导教师:
年月日
实验三
课程名称
信息论基础
时间
2014-11-21
实验名称
霍夫曼编码实验
地点
B302
姓名
樊晓晨
学号
1212020303
班级
电技12-3
同实验者
邹环宇
学号
1212020331
班级
电技12-3
一.实验目的:
通过本次实验的练习,使学生进一步巩固霍夫曼编码的原理,掌握霍夫曼编码方法,培养学生使用编程工具进行分析计算的基本能力。
二.实验内容:
1.应用Matlab软件编程实现霍夫曼编码算法(信源空间自行设计)
2.显示所有码字并计算编码效率
三.实验结果分析:
1.MATLAB程序
clc;
clear;
A=[0.10.10.20.30.10.10.1];%待编码啊序列概率
A=fliplr(sort(A));%按降序排列
T=A;
[m,n]=size(A);
B=zeros(n,n-1);%空的编码表(矩阵)
fori=1:
n
B(i,1)=T(i);%生成编码表的第一列
end
r=B(i,1)+B(i-1,1);%最后两个元素相加
T(n-1)=r;
T(n)=0;
T=fliplr(sort(T));
t=n-1;
forj=2:
n-1%生成编码表的其他各列
fori=1:
t
B(i,j)=T(i);
end
K=find(T==r);
B(n,j)=K(end);%从第二列开始,每列的最后一个元素记录特征元素在
%该列的位置
r=(B(t-1,j)+B(t,j));%最后两个元素相加
T(t-1)=r;
T(t)=0;
T=fliplr(sort(T));
t=t-1;
end
B;%输出编码表
END1=sym('[0,1]');%给最后一列的元素编码
END=END1;
t=3;
d=1;
forj=n-2:
-1:
1%从倒数第二列开始依次对各列元素编码
fori=1:
t-2
ifi>1&B(i,j)==B(i-1,j)
d=d+1;
else
d=1;
end
B(B(n,j+1),j+1)=-1;
temp=B(:
j+1);
x=find(temp==B(i,j));
END(i)=END1(x(d));
end
y=B(n,j+1);
END(t-1)=[char(END1(y)),'0'];
END(t)=[char(END1(y)),'1'];
t=t+1;
END1=END;
end
A%排序后的原概率序列
END%编码结果
fori=1:
n
[a,b]=size(char(END(i)));
L(i)=b;
end
avlen=sum(L.*A)%平均码长
H1=log2(A);
H=-A*(H1')%熵
P=H/avlen%编码效率
2.编码结果:
A=
0.30000.20000.10000.10000.10000.10000.1000
END=[1,10,1,0,1,110,111]
avlen=1.6000
H=2.6464
P=1.6540
成绩评定:
指导教师:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 实验 报告