2023年信息编码实验报告

上传人:夏** 文档编号:497518705 上传时间:2023-03-02 格式:DOC 页数:22 大小:210KB
返回 下载 相关 举报
2023年信息编码实验报告_第1页
第1页 / 共22页
2023年信息编码实验报告_第2页
第2页 / 共22页
2023年信息编码实验报告_第3页
第3页 / 共22页
2023年信息编码实验报告_第4页
第4页 / 共22页
2023年信息编码实验报告_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《2023年信息编码实验报告》由会员分享,可在线阅读,更多相关《2023年信息编码实验报告(22页珍藏版)》请在金锄头文库上搜索。

1、信息论与编码技术实验报告 实 验 题 目 香浓编码 学生专业班级 信息与计算科学 1001 学生姓名(学号) 曹雪萍() 指 导 教 师 吴慧 完 成 时 间 2013年5月18日 2013 年 5 月 18 日 信息论与编码技术实验报告 实 验 题 目 Huffman编码软件实现 学生专业班级 信息与计算科学 1001 学生姓名(学号) 曹雪萍() 指 导 教 师 吴慧 完 成 时 间 2013年5月19日 2013 年 5 月 19 日 实验一香农编码的实验报告一 、实验目的1. 了解香农编码的基本原理及其特点;2. 熟悉掌握香农编码的方法和步骤;3. 掌握C语言或者Matlab编写香农编

2、码的程序。二、实验要求对于给定的信源的概率分布,按照香农编码的方法进行计算机实现.三、实验原理给定某个信源符号的概率分布,通过以下的步骤进行香农编码1信源符号按概率从大到小排列2. 对信源符号求累加概率,表达式: Gi=Gi-1+p(xi)3. 求自信息量,确定码字长度。自信息量I(xi)=-log(p(xi);码字长度取大于等于自信息量的最小整数。4. 将累加概率用二进制表示,并取小数点后码字的长度的码 。四、实验内容离散无记忆信源符号S的概率分布:S P(S) = 0.20 0.19 0.18 0.17 0.15 0.10 0.01对离散无记忆信源分布S进行香农编码1.画出程序设计的流程图

3、,开始计算平均码长按概率分布大小对信源排序判断概率和S是否等于1输入对应符号的概率P(i)输入信源符号的个数 计算编码效率计算累加概率计算自信息量将累加概率转化为二进制码字输出累加概率,码长,码字,自信息量,平均码长,编码效率结束2.写出程序代码,N=input(N=); %输入信源符号的个数s=0;l=0;H=0;for i=1:N p(i)=input(p=); %输入信源符号概率分布矢量,p(i)0, error(不符合概率分布)end for i=1:N-1 for j=i+1:N if p(i)p(j) m=p(j); p(j)=p(i); p(i)=m; end endend %按

4、概率分布大小对信源排序for i=1:N a=-log2(p(i); if mod(a,1)=0 w=a; else w=fix(a+1); end %计算各信源符号的码长 l=l+p(i)*w; %计算平均码长end l=l;n=H/l; %计算编码效率P(1)=0for i=2:N P(i)=0; for j=1:i-1 P(i)=P(i)+p(j); endend %计算累加概率for i=1:N for j=1:w W(i,j)=fix(P(i)*2); P(i)=P(i)*2-fix(P(i)*2); endend %将累加概率转化为L(i)位二进制码字disp(W) %显示码字di

5、sp(l) %显示平均码长disp(n) %显示编码效率disp(I) %显示自信息量3.写出在调试过程中出现的问题 ,问题1:自信量程序不会编写问题2:累加概率时注意P(1)=0问题3:程序运行时要依次输入各个符号概率4.对实验的结果进行分析由程序运行结果,得2.34 2.41 2.48 2.56 2.74 3.34 6.66所以我们得到每个信源符号的自信息量为I(s1)=2.34 I(s2)=2.41 I(s3)=2.48 I(s4)=2.56 I(s5)=2.74 I(s6)=3.34 I(s7)=6.66根据公式,我们得到每个信源符号的码长为l1=3 l2=3 l3=3 l4=3 l5

6、=3 l6=4 l7=7由程序运行结果, 0 0 0 0 0 0 00 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0我们得到每个信源符号的为对应的二进制数为:G1=0.0000000 G2=0.0011000 G3=0.0110000 G4=0.1001000 G5=0.1011000 G6=0.1110000 G7=0.1111110 所以我们得到每个信源符号的码字为:S1=000 s2=001 s3=011 s4=100 s5=101 s6=1110 s7=1111110平

7、均码长为:3.14编码效率为:0.831五、实验结论与心得此次实验让我认识和熟悉了及步骤,对MATLAB软件也有更加深刻的掌握,会用它求某个符号信源的香农编码程序算法,对我的实验能力有所提高。Huffman编码软件实现实验报告一、实验目的1. 进一步熟悉Huffman编码过程;2. 掌握Matlab程序的设计和调试技术。二、实验要求1. 输入:信源符号个数r、信源的概率分布P;2. 输出:每个信源符号对应的Huffman编码的码字,编码效率。三、实验原理:1二进制Huffman编码的基本原理设信源s=其中对应的概率分布为P()=则其编码步骤如下:(1) 将q个信源符号按概率递减的方式排列。(2

8、) 用0、1码符号分别表示概率最小的两个信源符号,并将这两个概率最小的信源符号合并成一个新的符号,从而的得到的只含q-1个符号的新信源,称为信源的缩减信源(3) 将缩减信源中的符号仍按概率大小以递减次序排列,重复步骤(2)(4) 重复(1)(2)(3)三步骤,直至缩减信源只剩下两个符号为止,将这最后两个符号分别用0、1码字表示。 (5)从最后一级缩减信源开始,向前返回,得出各信源符号所对应的码符号序列,即为对应信源符号的码字。 2二进制Huffman编码程序设计的原理(编码步骤) (1)程序的输入:以一维数组的形式输入要进行Huffman编码的信源符号的概率,在运行该程序前,显示文字提示信息,

9、提示所要输入的概率矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量中存在小于0的项,则输入不合法,提示重新输入;如果概率矢量的求和大于1,则输入也不合法,提示重新输入。(2)Huffman编码具体实现原理: 在输入的概率矩阵p正确的前提条件下,对p进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组p的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及每次排序之前概率顺序的矩阵a。新生成一个n-1行n列,并且每个元素含有n个字符的空白矩阵,然后进行Huffman编码:将c矩阵的第n-1行的第一和第二个元素

10、分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补1,后面的编码都遵守这个原则)然后对n-i-1的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-1行第一、二个元素的根节点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成该行的第一二个元素的编码,最后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原

11、则进行赋值,重复以上过程即可完成Huffman编码。计算信源熵和平均码长,其比值即为编码密码效率。3.部分伪代码:(1) 节点信息结构体struct HuffNode int weight;/信源符号的概率 int parent;int lchild;int rchild;(2) 算法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 & h

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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