(完整word版)实验三香农编码.doc
上传人:悠柔****找我 上传时间:2024-09-10 格式:DOC 页数:5 大小:169KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

(完整word版)实验三香农编码.doc

(完整word版)实验三香农编码.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

信息论与编码实验报告院系:哈尔滨理工大学荣成校区专业:电子信息工程学号:姓名:日期:2015年6月16日香农编码信息论与编码第三次实验报告一、实验目的和任务1、理解信源编码的意义;2、熟悉MATLAB程序设计;3、掌握香农编码的方法及计算机实现;4、对给定信源进行香农编码,并计算编码效率;二、实验原理介绍给定某个信源符号的概率分布,通过以下的步骤进行香农编码1、信源符号按概率从大到小排列;2、确定满足下列不等式的整数码长为3、为了编成唯一可译码,计算第i个消息的累加概率:4、将累加概率变换成二进制数;取二进制数的小数点后位即为该消息符号的二进制码字。三、实验设备计算机Matlab2014四、编码程序N=input('N=');%输入信源符号的个数s=0;%对行的概率进行初始化l=0;%对列的概率初始化H=0;%对信息熵初始化fori=1:Np(i)=input('p=');%输入信源符号概率分布矢量p(i)<1;%输入概率小于1s=s+p(i);%行概率求和H=H+(-p(i)*log2(p(i)));%计算信源信息熵endifabs(s-1)>0%若行概率和>1则报错error('不符合概率分布')endfori=1:N-1%for循环按概率分布大小对信源排序forj=i+1:Nifp(i)<p(j)%冒泡排序m=p(j);p(j)=p(i);p(i)=m;endendendfori=1:Na=-log2(p(i));%确定满足不等式的整数a,并领a为第i个码字的长度ifmod(a,1)==0%a对1取余后赋值给aw=a;elsew=fix(a+1);%计算各信源符号的码长endl=l+p(i)*w;%计算平均码长endr=l;%香农编码的信息率(这里L=1,m=2)n=H/r;%计算编码效率P(1)=0;%初始1列为0;fori=2:NP(i)=0;%初始1列为0;累加forj=1:i-1P(i)=P(i)+p(j);%从2列开始累加endend%计算累加概率fori=1:Nforj=1:wW(i,j)=fix(P(i)*2);%对每次的P(i)取码字,长度与a相同P(i)=P(i)*2-fix(P(i)*2);%将累加概率转化为L(i)位二进制码字endendW%显示码字r%显示平均码长n%显示编码效率H%显示信息熵H实验结果>>xiangnongN=6p=0.25p=0.25p=0.20p=0.15p=0.10p=0.05W=000000100010000101101101111110r=2.7000n=0.8975H=2.4232六、实验心得此次实验让我明白了做程序需要先进行需求分析,然后画出流程图,根据流程图把每部分模块完成,然后再进行调试和编辑,提高了我做编程的能力