信息论与编码实验指导书讲解

上传人:今*** 文档编号:105743319 上传时间:2019-10-13 格式:DOC 页数:15 大小:405.37KB
返回 下载 相关 举报
信息论与编码实验指导书讲解_第1页
第1页 / 共15页
信息论与编码实验指导书讲解_第2页
第2页 / 共15页
信息论与编码实验指导书讲解_第3页
第3页 / 共15页
信息论与编码实验指导书讲解_第4页
第4页 / 共15页
信息论与编码实验指导书讲解_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《信息论与编码实验指导书讲解》由会员分享,可在线阅读,更多相关《信息论与编码实验指导书讲解(15页珍藏版)》请在金锄头文库上搜索。

1、 实验一 绘制二进熵函数曲线(2个学时)一、实验目的:1. 掌握Excel的数据填充、公式运算和图表制作2. 掌握Matlab绘图函数3. 掌握、理解熵函数表达式及其性质二、实验要求:1. 提前预习实验,认真阅读实验原理以及相应的参考书。2. 在实验报告中给出二进制熵函数曲线图三、实验原理:1. Excel的图表功能2. 信源熵的概念及性质四、实验内容:用Excel或Matlab软件制作二进熵函数曲线。具体步骤如下:1、启动Excel应用程序。2、准备一组数据p。在Excel的一个工作表的A列(或其它列)输入一组p,取步长为0.01,从0至100产生101个p(利用Excel填充功能)。3、取

2、定对数底c,在B列计算H(x) ,注意对p=0与p=1两处,在B列对应位置直接输入0。Excel中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。选用c=2,则应用函数LOG(x,2)。在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2)双击B2的填充柄,即可完成H(p)的计算。4、使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。在“系列”

3、中输入X值(即p值)范围,即$A$1:$A$101。在X轴输入标题概率,在Y轴输入标题信源熵。实验步骤:我是使用MATLAB来做的第一个实验,以下是我的代码1.我先编了一个函数,实现对信息熵的求导function h=Hp(p)%熵函数计算,输入是概率p(标量或一维矢量)%输出是h,与p同维度h=zeros(1,length(p);index=find(p0&p p=0:0.00001:1; plot(p,Hp(p)3.绘制熵函数图像如下实验二:香农编码软件实现(2个学时)1、实验目的(1)了解香农编码的基本原理及其特点;(2)熟悉掌握香农编码的方法和步骤;(3)掌握C语言或者Matlab编写

4、香农编码的程序。2、实验报告要求(1)简要总结香农编码的基本原理与特点(2)写出香农编码的基本步骤,画出实现香农编码的程序流程图(3)实现香农编码的Matlab或者C源程序3、实验内容(1)根据香农编码的方法和步骤,用香农编码编写程序(2)用编写的源程序验证书中例题的正确性。实验步骤:1.我先编了一个命令文件,实现累加概率,码长的求解,如下其中有一句H=xlsread(e:Book1.xlsx,A1:A7),是老师要求的对一个excel文件数据的读取,其中数据依次为0.1,0.2,0.1,0.1,0.1,0.3,0.1。2.下面是一个函数文件,命令文件要对它调用,它的作用是实现编出各自概率的码

5、字,如下:3.结果如下:4.下面是香农编码的流程图:开始输入符号个数N和相应概率Xi按概率由大到小排序按公式求码长求出对应位的概率累加和按乘2取余法则,将累加概率转换为二进制结合求得的对应码长,将二进制的累加概率取对应长度的作为相应码字输出信源、概率、累加概率、码长和码字结束实验三:Huffman编码软件实现(2个学时)1、实验目的(1)进一步熟悉Huffman编码过程;(2)掌握C语言递归程序的设计和调试技术(或者使用Matlab)。2、实验要求(1)输入:信源符号个数r、信源的概率分布P;(2)输出:每个信源符号对应的Huffman编码的码字。3、实验内容(1)算法 1、从键盘输入组成信源

6、C的字符个数N; 2、从键盘输入信源C和组成信源的字符所对应的概率数组P; 3、用函数来对信源进行二进制编码;先对P按从大到小进行排序,与此同时要把C中相应的字符的位置做相应的调换;用数组来记录编码:在进行记录编码时是从数组的最后一个开始存储的,而且,每进行一次编码所记录下来的两个编码是按从数组的最后一个元素开始服从countm-k-j、countm-k-j-1,其中k表示编码所进行的次数,j表示每次编码都只有;最后用函数来输出编码。(2)部分伪代码:(一)节点信息结构体struct HuffNode int weight;/信源符号的概率 int parent;int lchild;int

7、rchild;(二)算法void Huffman(int weight, int n, HuffNode hn, HuffCode hc) for(i = 0; i != 2*n - 1; +i) /create Huffman Node,step 1for(i = 0; i != n-1; +i) /create Huffman Node, step 2for(j = 0; j != n+i; j+) if(hnj.weight min1 & hnj.parent = 0)else if(hnj.weight min2 & hnj.parent = 0)else ; 在此逆序存储Huffma

8、n编码 int tempmaxlen; for(i = 0; i != n; +i)int parent = hni.parent;while(hnchild.parent != 0) 4、实验报告(1)简要总结Huffman编码的原理与特点(2)写出Huffman编码的基本步骤,画出实现Huffman编码的程序流程图(3)给出Huffman编码的源程序,并给出实验过程中的测试结果(4)总结实验过程遇到的问题及解决方法实验步骤:1.哈夫曼编码是编码效率最高的编码方式,属于无损压缩编码。2.下面是在matlab实现哈夫曼编码的代码:结果如下:3.过程中也发现了它的缺点: 哈夫曼码没有错误保护功能

9、, 在译码时, 如果码串中没有错误, 那么就能一个接一个地正确译出代码。但如果码串中有错 误,哪怕仅是 1 位出现错误,不但这个码本身译错,更糟糕的是后面的数据串也 会接着被译错,全乱了套,这种现象称为错误传播(error propagation)。计算 机对这种错误也无能为力,说不出错在哪里,更谈不上去纠正。 4.下面是哈夫曼编码的流程图:开始从主函数中获取各个字符及其权值,再调用Huffman函数定义哈夫曼树节点和哈弗曼编码表类型并用typedef声明类型初始化哈夫曼树查找权值最小的两个节点x1、x2定义节点n+i为x1和x2节点的父节点、其权值为二者之和P是根节点?循环n次定义c为当前要

10、求码字的节点,p指向要求的编码表P节点的左孩子为c?码字加1TFTF输出第i个符号码字结束码字加0P指向向根节点移动每执行一次,输出一个符号的码字,一共执行n次实验四 循环码的编码和译码程序设计一、实验目的: 1通过实验了解循环码的工作原理。 2了解生成多项式g(x)与编码、译码的关系。 3了解码距d与纠、检错能力之间的关系。4分析(7.3)循环码的纠错能力。二、实验要求:1、编、译码用上述的计算法程序框图编写。2、计算出所有的码字集合,可纠错误图样E(x)表和对应的错误伴随式表。3、考查和分析该码检、纠一、二位错误的能力情况。4、整理好所有的程序清单,变量名尽量用程序框图所给名称,并作注释。

11、5、出示软件报告.三、实验设计原理 1、循环码编码原理设有一(,)循环码,码字Cn-1CrCr-1C0,其中r=n-k。码字多项式为: C(x)= Cn-1xn-1+Cn-2xn-2+C1x+C0。 码字的生成多项式为: g(x)=gr-1xr-1gr-2xr-2+g1x+g0 待编码的信息多项式为: m(x)=mK-1xK-1+m0 xn-k.m(x)=Cn-1xn-1+Cn-Kxn-K 对于系统码有: Cn-1=mK-1,Cn-2=mK-2,Cn-K=Cr=m0 设监督多项式为: r(x)=Cr-1Xr-1+C1x+C0 根据循环码的定义,则有: C(x)=xn-Km(x)+r(x)=q(

12、x).g(x) Xn-Km(x)=q(x).g(x)+r(x) r(x)=Rg(x)xn-Km(x)即监督多项式是将多项式xn-Km(x)除以g(x)所得的余式。编码过程就是如何根据生成多项式完成除法运算求取监督多项式的过程。 设循环码(7.3)码的字多项式为: C(x)=C6x6+C5x5+C4x4+C3x3+C2x2C1x+C0 (n=7) 生成多项式为: g(x)=x4+x2+x+1 信息多项式为: m(x)=m2x2+m1x+m0 (k=3), 设m(x)=x2+x 监督多项式为: r(x)= Cr-1Xr-1+C1x+C0根据循环码的定义:生成多项式的倍式均是码字,编码实际上是做xn

13、-km(x)除以g(x)的 运算求得r(x)。编码程序框图见图4.1(a)左,二进制多项式除法示意图见图4.1(b)。 2、译码原理设R(x)为接收码字多项式,E(x)为错误图样多项式,S(x)为伴随式,则根据循环码的性质有: S(x)=g(x)R(x)=g(x)E(x) 当R(x)=C(x)时,有E(x)=0,S(x)=0 当R(x)不等于C(x)时,有E(x)为非0,S(x)为非0 111 .商数 g(x): 10111| 1100000 .xrm(x) + 10111 .第一步 11110 + 10111 .第二步 10010 + 10111 .第三步 101 .余式:x2+1 编码步骤: 、n-k=r=7-3=4,用x4乘m(x)的运算实 际上相当

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号