版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上信息论与编码技术实验报告 实 验 题 目 香浓编码 学生专业班级 信息与计算科学 1001 学生姓名(学号) 曹雪萍() 指 导 教 师 吴慧 完 成 时 间 2013年5月18日 2013 年 5 月 18 日 信息论与编码技术实验报告 实 验 题 目 Huffman编码软件实现 学生专业班级 信息与计算科学 1001 学生姓名(学号) 曹雪萍() 指 导 教 师 吴慧 完 成 时 间 2013年5月19日 2013 年 5 月 19 日 实验一香农编码的实验报告一 、实验目的1. 了解香农编码的基本原理及其特点;2. 熟悉掌握香农编码的方法和步骤;3. 掌握C语言
2、或者Matlab编写香农编码的程序。二、实验要求对于给定的信源的概率分布,按照香农编码的方法进行计算机实现.三、实验原理给定某个信源符号的概率分布,通过以下的步骤进行香农编码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进行香农编
3、码1.画出程序设计的流程图,开始计算平均码长按概率分布大小对信源排序判断概率和S是否等于1输入对应符号的概率P(i)输入信源符号的个数 计算编码效率计算累加概率计算自信息量将累加概率转化为二进制码字输出累加概率,码长,码字,自信息量,平均码长,编码效率结束2.写出程序代码,N=input('N='); %输入信源符号的个数s=0;l=0;H=0;for i=1:N p(i)=input('p='); %输入信源符号概率分布矢量,p(i)<1 s=s+p(i)H=H+(-p(i)*log2(p(i);I(i)=-log2(p(i); %计算信源信息熵endi
4、f abs(s-1)>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 %按概率分布大小对信源排序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
5、(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) %显示码字disp(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所以我们得到每个信源
6、符号的自信息量为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=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. G
7、7=0. 所以我们得到每个信源符号的码字为:S1=000 s2=001 s3=011 s4=100 s5=101 s6=1110 s7=平均码长为:3.14编码效率为:0.831五、实验结论与心得此次实验让我认识和熟悉了及步骤,对MATLAB软件也有更加深刻的掌握,会用它求某个符号信源的香农编码程序算法,对我的实验能力有所提高。Huffman编码软件实现实验报告一、实验目的1. 进一步熟悉Huffman编码过程;2. 掌握Matlab程序的设计和调试技术。二、实验要求1. 输入:信源符号个数r、信源的概率分布P;2. 输出:每个信源符号对应的Huffman编码的码字,编码效率。三、实验原理:1
8、二进制Huffman编码的基本原理设信源s=其中对应的概率分布为P()=则其编码步骤如下:(1) 将q个信源符号按概率递减的方式排列。(2) 用0、1码符号分别表示概率最小的两个信源符号,并将这两个概率最小的信源符号合并成一个新的符号,从而的得到的只含q-1个符号的新信源,称为信源的缩减信源(3) 将缩减信源中的符号仍按概率大小以递减次序排列,重复步骤(2)(4) 重复(1)(2)(3)三步骤,直至缩减信源只剩下两个符号为止,将这最后两个符号分别用0、1码字表示。 (5)从最后一级缩减信源开始,向前返回,得出各信源符号所对应的码符号序列,即为对应信源符号的码字。 2二进制Huffman编码程序
9、设计的原理(编码步骤) (1)程序的输入:以一维数组的形式输入要进行Huffman编码的信源符号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量中存在小于0的项,则输入不合法,提示重新输入;如果概率矢量的求和大于1,则输入也不合法,提示重新输入。(2)Huffman编码具体实现原理: <1>在输入的概率矩阵p正确的前提条件下,对p进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组p的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及
10、每次排序之前概率顺序的矩阵a。<2>新生成一个n-1行n列,并且每个元素含有n个字符的空白矩阵,然后进行Huffman编码:将c矩阵的第n-1行的第一和第二个元素分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补1,后面的编码都遵守这个原则)然后对n-i-1的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-1行第一、二个元素的根节点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完
11、成该行的第一二个元素的编码,最后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原则进行赋值,重复以上过程即可完成Huffman编码。<3>计算信源熵和平均码长,其比值即为编码密码效率。3.部分伪代码:(1) 节点信息结构体struct HuffNode int weight;/信源符号的概率 int parent;int lchild;int rchild;(2) 算法void Huffman(int weight, int n, HuffNode hn, HuffCode hc) for
12、(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 ; 在此逆序存储Huffman编码 int tempmaxlen; for(i = 0; i != n; +i)int
13、 parent = hni.parent;while(hnchild.parent != 0) 4. Huffman编码方法的特征 (1) 它是一种分组码,各个信源符号都被映射成一组固定次序的马符号。(2) 它是一种唯一可解的码,任何符号序列只能以一种方式译码。(3)它是一种即时码:由于代表信源符号的节点都是终端节点,因此其编码不可能是其他终端节点对应的编码的前缀,即Huffman编码所得的码字为即时码。(4) Huffman码的译码:对接受到的哈弗曼码序列可通过从左到右检查各个符号进行译码。(5) 哈夫曼编码过程中,当缩减信源的概率分布重新排列时,应使合并得到的概率和尽量处于高的位置,这样可
14、使合并的元素重复编码次数减少,四、实验内容对离散无记忆信源 进行Huffman编码。1. 画出Huffman编码的程序流程图(如下)开始输入信源符号对应概率P(i)判断P(i)是否>0判别概率总和是否<=1对概率数组q升序排序用0,1表示概率最小的两个信源符号将数组q前两项加和,得到新的概率序列判断信源符号是否只剩两个符号生成n-1行n列,每个元素含有n个字符的空白矩阵进行Huffman编码,并完成码字分配计算一个Huffman码字的平均码长计算信源熵和编码效率结束2. 写出Huffman编码的源程序p=input('please input a number:')
15、 n=length(p);for i=1:n if p(i)<0fprintf('n The probabilities in huffman can not less than 0!n'); p=input('please input a number:') %若输入的概率数组中有小于0的值,则重新输入概率数组 end endif abs(sum(p)-1)>0 fprintf('n The sum of the probabilities in huffman can more than 1!n'); p=input('p
16、lease 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)-(n-2):n*(find(
17、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(
18、p.*ll); 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
19、.00q= 0.40 0.60 1.00 1.00 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. 在实验过程中,遇到以下几个问题: 信源缩减不知怎么表示; 不知如何运用矩阵存储对应概率所对应的位置; 起初忘记对输入的各个概率以及概率之和进行判断,导致的程序的
20、不合理性与不可行性。2. 解决方法:通过查找资料和相关书籍,学习类似的哈夫曼编码的程序的编写,使得问题得到解决六、实验心得通过此次试验,使得我对Huffman编码的编写原理、基本步骤有了更加深刻的理解,此外,我还学到了有关MATLAB知识的运用,比如:一些特殊语句的应用、矩阵存储知识的应用等等。总之,我认为此次实验还是比较成功的。同、收回房屋:1.承租人擅自将房屋转让或转借的;登鹳雀楼唐代:王之涣白日依山尽,黄河入海流。欲穷千里目,更上一层楼。译文及注释译文夕阳依傍着西山慢慢地沉没, 滔滔黄河朝着东海汹涌奔流。若想把千里的风光景物看够, 那就要登上更高的一层城楼。注释鹳雀楼:旧址在山西永济县,
21、楼高三层,前对中条山,下临黄河。传说常有鹳雀在此停留,故有此名。白日:太阳。依:依傍。尽:消失。 这句话是说太阳依傍山峦沉落。欲:想要得到某种东西或达到某种目的的愿望,但也有希望、想要的意思。穷:尽,使达到极点。千里目:眼界宽阔。更:替、换。(不是通常理解的“再”的意思)这首诗写诗人在登高望远中表现出来的不凡的胸襟抱负,反映了盛唐时期人们积极向上的进取精神。其中,前两句写所见。“白日依山尽”写远景,写山,写的是登楼望见的景色,“黄河入海流”写近景,写水写得景象壮观,气势磅礴。这里,诗人运用极其朴素、极其浅显的语言,既高度形象又高度概括地把进入广大视野的万里河山,收入短短十个字中;而后人在千载之
22、下读到这十个字时,也如临其地,如见其景,感到胸襟为之一开。首句写遥望一轮落日向着楼前一望无际、连绵起伏的群山西沉,在视野的尽头冉冉而没。这是天空景、远方景、西望景。次句写目送流经楼前下方的黄河奔腾咆哮、滚滚南来,又在远处折而东向,流归大海。这是由地面望到天边,由近望到远,由西望到东。这两句诗合起来,就把上下、远近、东西的景物,全都容纳进诗笔之下,使画面显得特别宽广,特别辽远。就次句诗而言,诗人身在鹳雀楼上,不可能望见黄河入海,句中写的是诗人目送黄河远去天边而产生的意中景,是把当前景与意中景溶合为一的写法。这样写,更增加了画面的广度和深度。而称太阳为“白日”,这是写实的笔调。落日衔山,云遮雾障,
23、那本已减弱的太阳的光辉,此时显得更加暗淡,所以诗人直接观察到“白日”的奇景。至于“黄河”。当然也是写实。它宛若一条金色的飘带,飞舞于层峦叠嶂之间。诗人眼前所呈现的,是一幅溢光流彩、金碧交辉的壮丽图画。这幅图画还处于瞬息多变的动态之中。白日依山而尽,这仅仅是一个极短暂的过程;黄河向海而流,却是一种永恒的运动。如果说这种景色很美,那么,它便是一种动态的美,充满了无限生机的活泼的美。这不是所谓“定格”,不是被珍藏的化石或标本。读者深深地为诗人的大手笔所折服。后两句写所想。“欲穷千里目”,写诗人一种无止境探求的愿望,还想看得更远,看到目力所能达到的地方,唯一的办法就是要站得更高些,“更上一层楼”。“千
24、里”“一层”,都是虚数,是诗人想象中纵横两方面的空间。“欲穷”“更上”词语中包含了多少希望,多少憧憬。这两句诗,是千古传诵的名句,既别翻新意,出人意表,又与前两句诗承接得十分自然、十分紧密;同时,在收尾处用一“楼”字,也起了点题作用,说明这是一首登楼诗。从这后半首诗,可推知前半首写的可能是在第二层楼所见,而诗人还想进一步穷目力所及看尽远方景物,更登上了楼的顶层。诗句看来只是平铺直叙地写出了这一登楼的过程,而含意深远,耐人探索。这里有诗人的向上进取的精神、高瞻远瞩的胸襟,也道出了要站得高才看得远的哲理。就全诗的写作特点而言,这首诗是日僧空海在文镜秘府论中所说的“景入理势”。有人说,诗忌说理。这应
25、当只是说,诗歌不要生硬地、枯燥地、抽象地说理,而不是在诗歌中不能揭示和宣扬哲理。象这首诗,把道理与景物、情事溶化得天衣无缝,使读者并不觉得它在说理,而理自在其中。这是根据诗歌特点、运用形象思维来显示生活哲理的典范。这首诗在写法上还有一个特点:它是一首全篇用对仗的绝句。前两句“白日”和“黄河”两个名词相对,“白”与“黄”两个色彩相对,“依”与“入”两个动词相对。后两句也如此,构成了形式上的完美。沈德在唐诗别中选录这首诗时曾指出:“四语皆对,读来不嫌其排,骨高故也。”绝句总共只有两联,而两联都用对仗,如果不是气势充沛,一意贯连,很容易雕琢呆板或支离破碎。这首诗,前一联用的是正名对,所谓“正正相对”,语句极为工整,又厚重有力,就更显示出所写景象的雄大;后一联用的是,虽然两句相对,但是没有对仗的痕迹。所以说诗人运用对仗的技巧也是十分成熟的。 荆轲,一个四处为家的刺客,他的心犹如浮云,心如飘蓬,是没有根的,然而高渐离的筑声,却成了他愿意停留在燕国这片土地上的原由。虽是初见,却如故人。也许所有的遇见,早已经是前世的注定,没有早晚,刚好在合适的时间遇见你,就是最美的相识。他曾经游历过多少地方,自己已经数不清,但是没有一处可以挽留他行走的脚步,唯有今日高渐离的筑声,让他怎么也舍不得离开。从此二人心性相投,在燕国集市上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025有关租房合同书样本
- 2025租房合同授权书范文
- 2025标准个人租赁合同
- 2025至2030城市污水处理行业发展趋势分析与未来投资战略咨询研究报告
- 学校岗前教育培训考试题及答案解析
- 预约客运从业资格证考试及答案解析
- 2025-2030绿色建筑行业发展趋势与投资战略规划研究报告
- 护理礼仪选择题题库及答案解析
- 2025-2030绿色建材认证体系对木制品企业品牌溢价能力研究
- 2025-2030绿色债券发行标准国际化比较与ESG投资价值评估报告
- 3.4《海洋资源》课件-人教版地理八年级上册
- 模块盖房基础知识培训课件
- 三年级上册数学听评课记录《倍的认识》人教新课标
- 矿业权评估师地质与矿业工程基础考试试题及答案
- 失禁性皮炎护理指南
- 宋词词牌名由来教学课件
- 寺院民主委员会管理办法
- 事业单位值班制管理办法
- 2025至2030危货运输行业产业运行态势及投资规划深度研究报告
- 科研设备采购管理制度
- CRRT使用管理制度
评论
0/150
提交评论