信息编码实验报告_第1页
信息编码实验报告_第2页
信息编码实验报告_第3页
信息编码实验报告_第4页
信息编码实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. G2=0. G3=0. G4=0. G5=0. G6=0. G7=0. 所以我们得到每个信源符号的码字为:S1=000 s2=001 s3=011 s4=100 s5=101 s6=1110 s7=平均码长为:3.14编码效率为:0.831五、实验结论与心得此次实验让我认识和熟悉了及步骤,对MATLAB软件也有

7、更加深刻的掌握,会用它求某个符号信源的香农编码程序算法,对我的实验能力有所提高。Huffman编码软件实现实验报告一、实验目的1. 进一步熟悉Huffman编码过程;2. 掌握Matlab程序的设计和调试技术。二、实验要求1. 输入:信源符号个数r、信源的概率分布P;2. 输出:每个信源符号对应的Huffman编码的码字,编码效率。三、实验原理:1二进制Huffman编码的基本原理设信源s=其中对应的概率分布为P()=则其编码步骤如下:(1) 将q个信源符号按概率递减的方式排列。(2) 用0、1码符号分别表示概率最小的两个信源符号,并将这两个概率最小的信源符号合并成一个新的符号,从而的得到的只

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

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

10、然后对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矩阵中的编码值”的原则进行赋值,重复以上过程即可完成Huffman编码。计算信源熵和平均码长,其比值即为编码密码效率。3.部分伪代码

11、:(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 &

12、hnj.parent = 0)else if(hnj.weight 0判别概率总和是否=1对概率数组q升序排序用0,1表示概率最小的两个信源符号将数组q前两项加和,得到新的概率序列判断信源符号是否只剩两个符号生成n-1行n列,每个元素含有n个字符的空白矩阵进行Huffman编码,并完成码字分配计算一个Huffman码字的平均码长计算信源熵和编码效率结束2. 写出Huffman编码的源程序p=input(please input a number:) n=length(p);for i=1:n if p(i)0 fprintf(n The sum of the probabilities in

13、huffman can more than 1!n); p=input(please input a number:) end q=p;a=zeros(n-1,n); %生成一个n-1行n列的数组for i=1:n-1 q,l=sort(q) a(i,:)=l(1:n-i+1),zeros(1,i-1) q=q(1)+q(2),q(3:n),1; end for i=1:n-1 c(i,1:n*n)=blanks(n*n); end c(n-1,n)=0; c(n-1,2*n)=1; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)=1)-

14、(n-2):n*(find(a(n-i+1,:)=1) c(n-i,n)=0 c(n-i,n+1:2*n-1)=c(n-i,1:n-1) c(n-i,2*n)=1 for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)=j+1)-1)+1:n*find(a(n-i+1,:)=j+1) end end for i=1:n h(i,1:n)=c(1,n*(find(a(1,:)=i)-1)+1:find(a(1,:)=i)*n) ll(i)=length(find(abs(h(i,:)=32) end l=sum(p.*ll)

15、; fprintf(n huffman code:n);hhh=sum(p.*(-log2(p); fprintf(n the huffman effciency:n); t=hh/l3. 运行源程序后,实验过程中的测试结果p = 0.32 0.22 0.18 0.16 0.08 0.04q = 0.04 0.08 0.16 0.18 0.22 0.32q = 0.12 0.16 0.18 0.22 0.32 1.00q = 0.18 0.22 0.28 0.32 1.00 1.00q = 0.28 0.32 0.40 1.00 1.00 1.00q= 0.40 0.60 1.00 1.00

16、1.00 1.00ll = 2 4 2 2 3 4huffman code:h = 00 1001 01 11 101 1000the huffman effciency:t = 0.9801实验结果分析信源 的码字长度分别为 2 4 2 2 3 4 ;所对应的码字为 11 0110 10 00 010 0111 ;编码效率为 0.9801。5、总结实验过程遇到的问题及解决方法 1. 在实验过程中,遇到以下几个问题: 信源缩减不知怎么表示; 不知如何运用矩阵存储对应概率所对应的位置; 起初忘记对输入的各个概率以及概率之和进行判断,导致的程序的不合理性与不可行性。2. 解决方法:通过查找资料和相

17、关书籍,学习类似的哈夫曼编码的程序的编写,使得问题得到解决六、实验心得通过此次试验,使得我对Huffman编码的编写原理、基本步骤有了更加深刻的理解,此外,我还学到了有关MATLAB知识的运用,比如:一些特殊语句的应用、矩阵存储知识的应用等等。总之,我认为此次实验还是比较成功的。同、收回房屋:1.承租人擅自将房屋转让或转借的;登鹳雀楼唐代:王之涣白日依山尽,黄河入海流。欲穷千里目,更上一层楼。译文及注释译文夕阳依傍着西山慢慢地沉没, 滔滔黄河朝着东海汹涌奔流。若想把千里的风光景物看够, 那就要登上更高的一层城楼。注释鹳雀楼:旧址在山西永济县,楼高三层,前对中条山,下临黄河。传说常有鹳雀在此停留

18、,故有此名。白日:太阳。依:依傍。尽:消失。 这句话是说太阳依傍山峦沉落。欲:想要得到某种东西或达到某种目的的愿望,但也有希望、想要的意思。穷:尽,使达到极点。千里目:眼界宽阔。更:替、换。(不是通常理解的“再”的意思)这首诗写诗人在登高望远中表现出来的不凡的胸襟抱负,反映了盛唐时期人们积极向上的进取精神。其中,前两句写所见。“白日依山尽”写远景,写山,写的是登楼望见的景色,“黄河入海流”写近景,写水写得景象壮观,气势磅礴。这里,诗人运用极其朴素、极其浅显的语言,既高度形象又高度概括地把进入广大视野的万里河山,收入短短十个字中;而后人在千载之下读到这十个字时,也如临其地,如见其景,感到胸襟为之

19、一开。首句写遥望一轮落日向着楼前一望无际、连绵起伏的群山西沉,在视野的尽头冉冉而没。这是天空景、远方景、西望景。次句写目送流经楼前下方的黄河奔腾咆哮、滚滚南来,又在远处折而东向,流归大海。这是由地面望到天边,由近望到远,由西望到东。这两句诗合起来,就把上下、远近、东西的景物,全都容纳进诗笔之下,使画面显得特别宽广,特别辽远。就次句诗而言,诗人身在鹳雀楼上,不可能望见黄河入海,句中写的是诗人目送黄河远去天边而产生的意中景,是把当前景与意中景溶合为一的写法。这样写,更增加了画面的广度和深度。而称太阳为“白日”,这是写实的笔调。落日衔山,云遮雾障,那本已减弱的太阳的光辉,此时显得更加暗淡,所以诗人直接观察到“白日”的奇景。至于“黄河”。当然也是写实。它宛若一条金色的飘带,飞舞于层峦叠嶂之间。诗人眼前所呈现的,是一幅溢光流彩、金碧交辉的壮丽图画。这幅图画还处于瞬息多变的动态之中。白日依山而尽,这仅仅是一个极短暂的过程;黄河向海而流,却是一种永恒的运动。如果说这种景色很美,那么,它便是一种动态的美,充满了无限生机的活泼的美。这不是所谓“定格”,不是被珍藏的化石或标本。读者深深地为诗人的大手笔所折服。后两句写所想。“欲穷千里目”,写诗人一种无止境探求的愿望,还想看得更远,看到目力所能达到的地方,唯一的办法就是要站得更高些,“更上一层楼”。“千里”“一层”,都

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论