信息论实验二报告
更新时间:2023-08-13 01:46:01 阅读量: 小学教育 文档下载
实 验 报 告
课程名称 信息论与编码 实验项目
实验仪器
系 别
专 业 电子信息工程
班级/学号 电信1103/2011010550
学生姓名 实验日期
成 绩
指导教师
实验项目:霍夫曼编码、率失真函数的计算
实验项目性质:验证性实验
课程:《信息论与编码》
计划学时:4学时
一、实验目的
掌握使用计算机进行霍夫曼编码、计算率失真函数的方法。
二、实验内容
利用matlab语言编程实现霍夫曼编码、计算率失真函数。
三、实验原理
1.参照教材(焦瑞莉等编著《信息论基础教程》)第111页表4-8理解霍夫曼编码的过程
2.参照教材(焦瑞莉等编著《信息论基础教程》)第148页式(6-7)理解率失真函数的定义
四、实验方法与实验步骤
(一)参照教材第223页信源熵程序建立文件huffman.m
文件huffman.m的代码:
% huffman编码生成器 %
% 函数说明: %
% [W,L.q]=huffman(P)为huffman编码函数 %
% P为信源的概率矢量,W为编码返回的码字 %
% L为编码返回的平均码字长度,q为编码效率 %
% ***************************************%
function [W,L,q]=huffman(P)
if(length(find(P<=0))~=0)
error('Not a prob.vector.negative component'); % 判断是否符合概率分布条件 end
if(abs(sum(P)-1)>10e-10)
error('Not a ponent do not add up to 1') % 判断是否符合概率和为1
end
n=length(P); % 计算输入元素个数
p=P;
mark=zeros(n-1,n); % mark为n-1行、n列矩阵,用来记录每行最小两概率叠加后概率排列次序
% 1) 确定概率大小值的排列,得到mark矩阵。
for i=1:n-1
[p,num]=sort(p); % 对输入元素排序并纪录
mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];
p=[p(1)+p(2),p(3:n),1];
end
% 2)生成一个n-1行、n1(n×n)列矩阵table,每行可看做n个段,
% 每段长为n,记录一个码字(每个码字的长度不会超过n)。
for i=1:n-1
table(i,:)=blanks(n*n);
end
% 3)计算各个元素码字,循环n 2次,决定矩阵table
% 从倒数第二行开始到第行的每段的码字值,到编码表格table
table(n-1,n)='l'; % 小值赋1
table(n-1,2*n)='0'; % 大值赋0
for i=2:n-1
table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)==1))-(n-2)...
:n*(find(mark(n-i+1,:)==1))); % 按mark的记录依次赋值
table(n-i,n)='1';
table(n-i,n+1:2*n-1)=table(n-i,1: n-1);
table(n-i,2*n)='0';
for j=1:i-1
table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,...
n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1)); % 按mark的记录依次赋值
end
end
% 4)得到编码后的码字
for i=1:n
W(i,1:n)=table(1,n*(find(mark(1,:)==i)-1)+1:n*find(mark(1,:)==i)); l(i)=length(find(abs(W(i,:))~=32));
end
L=sum(P.*l); % 计算平均码字长度
H=entropy(P,2); % 计算信源熵
V=sum(P.*((l-L).^2)); %计算码字的方差,以判断编码方法的优劣
q=H/L;% 计算编码效率
% 打印输出结果
for i=1:n
B{i}=i;
end
[m,n]=size(W);
TEMP=blanks(m);
W=[W,TEMP',TEMP',TEMP'];
[m,n]=size(W);
W=reshape(W',1,m*n);
s0='很好!输入正确,Huffman编码1结果如下:';
s1='Huffman编码所得码字W:';
s2='Huffman编码平均码字长度L:';
s3='Huffman编码所得码字W的方差V:';
s4='Huffman编码的编码效率q:';
disp(s0);
disp(s1),disp(B),disp(W);
disp(s2),disp(L);
disp(s3),disp(V);
disp(s4),disp(q);
(二)建立文件exercise4_8_1.m通过调用huffman.m计算教材第117页练习4.8(1)信源Y
文件exercise4_8_1.m的代码和运行结果:
clc;
P=[0.2,0.19,0.18,0.17,0.15,0.10,0.01];
Y=huffman(P);
运行结果:
(三)参照教材第232页信息率失真函数的迭代计算程序建立文件ratedf.m
文件ratedf.m的代码:
%信息率失真函数的迭代计算,选代精度取为10^(-7) %
%在信源的输入概率分布Pa和失真矩阵d已知的条件下求出信息率失真函数
%
%函数说明: %
%[Pha,Rmin,Dmax,Smax]=RateDF(P,d,s)为信息率失真函数 %
%变量说明: %
%Pa:信源的输入概率矩阵,d:失真矩阵,S:拉氏乘子 %
%Pba:最佳正向转移概率矩阵,Smax:最大拉氏乘子 %
%Rmin:最小信息率,Dmax:允许的最大失真度 %
%Pb:信源的输出概率矩阵,D:允许的失真度,R:信息率 %
%r:输入信源数,s:输出信源数 %
%*********************************************************************% function [Pba,Rmin,Dmax,Smax]=ratedf(Pa,d,S)
% 提示错误信息
[r,s]=size(d);
if (length(find(Pa<=0)) ~=0)
error('Not a prob.vector, should be pesitive component!');
%判断是否符台概率分布条件
end
if (abs(sum(Pa)- 1 )>=10e-10)
error('Not a prob.vector, component do not add up to 1!')
%判断是否符合概率和为1
end
if (r~=length(Pa))
error('The parameters do not match!'); %判断参数是否一致
end
%第一步
pba=[];
RS=[]; %R(s)函数初始化
DS=[]; %D(s)函数初始化
m=1; %m为S循环的次数
while(1) % 外层循环.对S的循环
Pba(1:r,1:s, 1)=1/s*ones(r,s); %求信道正向转移矩阵Pba
%第二步
for j=1:s
Pb(j,1)=0;
for i=1:r
Pb(j,1 )=Pb(j, 1)+Pa(i)*Pba(i,j,1 );
%求信源的输出概率矩阵,即Pb(j,1)
end
end
for i=1:r
temp(i)=0;
for j=1:s
temp(i)=temp(i) + Pb(j,1)*exp(S(m) *d(i,j));
% temp为临时项,求Pha(i,j,2)时表达式的分母
end
end
for i=1:r
for j=1:s
Pba(i,j,2)=(Pb(j,1)*exp(S(m)*d(i,j)))/temp(i);
end
end
D(1)=0;
for i= 1:r
for j=1:s
D(1)=D(1)+Pa(i)*Pba(i,j,1)*d(i,j); % 求D(1)
end
end
R(1)=0;
for i=1:r
for j=1:s
if (Pba(i,j, 1 ) ~=0)
R(1)=R(1)+Pa(i)*Pba(i,j,1)*log2(Pba(i,j,1)/Pb(j,1)); % 求R(1) end
end
end
n=2; %n 为内层循环次数
while(1) %内层循环,对精度的循环
%第三步
for j=1:s
Pb(j,n) = 0;
for i= 1:r
Pb(j,n)=Pb(j,n)+Pa(i)*Pba(i,j,n); % 求输出的信源概率分布 end
end
for i=1 :r
temp(i)=0;
for j=1:s
temp(i) =temp (i)+Pb (j,n) *exp(S(m) *d(i,j));
%temp为临时项,求Pba(i,j,n+1)时表达式的分母
end
end
for i=1:r
for j=1:s
if(temp(i) ~=0)
Pba(i,j,n+1)=(Pb(j, n)*exp(S(m)*d(i,j)))/temp(i); %求Pba(i, j, n+1)
end
end
end
%第四步
D(n)=0;
for i=1:r
for j=1:s
D(n)=D(n)+Pa(i)*Pba(i,j,n)*d(i,j); % 隶D(n)
end
end
R(n)=0;
for i=1:r
for j=1:s
if(Pba(i,j,n)~=0)
R(n)=R(n)+Pa(i)*Pba(i,j,n)*log2(Pba(i,j,n)/Pb(j,n)); %求R(n)
end
end
end
%判断差别是否在允许的精度范围之内
if(abs(R(n)-R(n-1))<=10^(-7)) %R(n)精度判断
if(abs(D(n)-D(n-1))<=10^(-7)) %D(n)精度判断
break;
end
end
n=n+1; %内层循环次数加1
end %内层循环结束
%第五步
S(m+1)=S(m)+0.5;
%第六步
if(abs(R(n)<10^(-7)))
if(m<=10)
disp('此时S的值为:'),disp(S(m));
error('初始拉氏乘子S取得大了,请取小些!');
%判断拉氏乘子S的初始值是否合适
else
[k,l,q]=size(pba);
Pba=pba(:,:,q);
Rmin=min(RS)
Dmax=max(DS);
Smax=S(m-1);
break;
end
end
pba=[Pba(:,:,:)];
RS=[RS R(n)];
DS=[DS D(n)];
m=m+1;%外层循环次数加1
end %外层循环结束
%打印输出结果
s0='很好!输入正确,选代结果如下:';
s1='最佳转移概率分布Pba:';
s2='最小信息率Rmin:';
s3='最大失真度Dmax:';
s4='最大拉氏乘于Smax:';
disp(s0);
disp(s1),disp(Pba);
disp(s2),disp(Rmin);
disp(s3),disp(Dmax);
disp(s4),disp(Smax);
%画出信息率失真函数R(D)
plot(DS,RS)
xlabel('允许的失真度D')
ylabel('信息率失真函数R(D)')
title('信息率失真函数R(D)的曲线图')
(四)建立文件exercise6_2.m通过调用ratedf.m计算教材第161页练习6.2(%注意拉式因子s的取值范围为负无穷大到零(小于零),可从一个绝对值充分大的负数取起,如s=-100。) 文件exercise6_2.m的代码和运行结果:
clc;
Pa=[1/2,1/2];
d=[0,1,1/4;
1,0,1/4];
S=-1000000;
ratedf(Pa,d,S);
运行结果:
通过过本次试验我掌握了利用matlab语言编程实现霍夫曼编码、计算率失真函数,这次试验还让我对书本上的本部分知识有了跟深刻的了解,更加熟悉了MatLab软件的使用。通过老师的提问和讲解,还让我明白了很多关于霍夫曼编码的实质性,这次试验使我懂得了不少知识点。
正在阅读:
信息论实验二报告08-13
2015-2020年中国真空泵制造行业深度调研与发展趋势研究报告09-06
写王字游戏作文300字06-17
暑假学与练八年级语文英语答案05-24
环境教育12第十二章_社会环境教育05-18
移印机操作规程ZC0909-08-SB04-29
ISO IEC 27004-2009信息安全测量中文版 - 图文03-22
中国海水养殖大产业架构的战略思考06-09
2013年江苏高考试题(全科)04-09
- 通信原理实验报告
- 2016年上半年安徽省临床医学检验技术中级技师职称试题
- 传智播客刘意老师JAVA全面学习笔记
- 星级酒店客房部保洁服务标准与工作流程操作规范 - PA新员
- 算法竞赛入门经典授课教案第1章 算法概述
- 《微信公众平台架起家校互通桥》结题报告
- 2018年宁夏银川市高考数学三模试卷(理)Word版含解析
- 大学生创业基础 - 尔雅
- 2016年6月英语六级真题写作范文3套
- 中国磁性材料纸行业专项调查与发展策略分析报告(2015-2020)
- 云南省2018届高三普通高中学业水平考试化学仿真试卷二Word版缺答案
- 窗函数法设计低通滤波器
- 第三章 绩效考评方法与绩效管理模式
- 高等数学教案
- 个人独资合伙企业习题及答案
- 小学语文沪教版三年级上册第六单元第30课《想别人没想到的》公开课优质课教案比赛讲课获奖教案
- 曳引钢丝绳及其他曳引系统校核计算 - 图文
- 淮阴工学院管理学期末试卷7 - 图文
- 受力分析方法(1)
- 2013-2014学年陕西省西安市西工大附小五年级(上)期末数学试卷及解析
- 信息论
- 实验
- 报告
- 俄罗斯佩钦加镍公司铜-镍矿石选矿工艺的完善
- 江苏省会计从业资格考试电算化实务题第四部分资产负债表和损益表中所有公式
- 非煤矿山急救技术备课目录
- 大学生工作计划-大学生心理健康工作计划表怎么写
- 北京市西城区2013-2014学年高二下学期期末考试数学理试卷
- 土木工程毕业设计文献综述
- 2012版机电产品报价手册.1
- 最新初中地理的教学工作计划9
- 管理体系认证申请书
- 中水处理工程施工方案
- C程序项目一制作简单计算器
- 先天性小耳畸形耳廓再造成形术围手术期的护理
- 模拟电子技术基础(第四版)习题解答
- 挣得值分析法在工程管理中的应用研究
- 深入实施创新驱动发展战略
- 隐蔽工程掀起你的盖头来
- 6.7用相似三角形解决问题1
- 大连理工大学毛概题库
- 线圈电感量的计算
- 红警3运行说明