信息论与编码课程设计要点讲解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥工业大学 计算机与信息学院 课程设计报告 课 程:信息论与编码课程设计 四元费诺编码 设计目的 四元费诺在二元费诺的基础上编码的时候分成四组概率相等的情况,然后再递归,再每个小组再分为四个概率相等的小组。这种编码方法属于把概率匹配编码。这种编码方法只有信源符号的概率分布正好满足P(si)=r的(-li)次方时才会达到最佳码的编码效果。设计java程序(含界面)用以对输入字符串实现4元费诺编码并计算编码效率,并且设计译码函数使满足根据编码的结果,输入任意的4进制数字串能够正确唯一的译码。 设计原理 首先,将信源符号以概率递减的次序排列进来,将排列好的信源符号划分为大组,使组的概率和近于相同,并各赋于一个元码符号””、”1”、”2”、”3”.然后,将每一大组的信源符号再分成组,使同一组的个小组的概率和近于相同,并又分别赋予一元码符号。依次下去,直至每一个小组只剩下一个信源符号为止。这样,信源符号所对应的码符号序列则为编得的码字。译码原理,按照编码的二叉树从树根开始,按译码序列进行逐个的向其叶子结点走,直到找到相应的信源符号为止。之后再把指示标记回调到树根,按照同样的方式进行下一序列的译码到序列结束。如果整个译码序列能够完整的译出则返回成功,否则则返回译码失败。 编码方法:首先将信源消息符号按其出现的概率大小依次排列。  将依次排列的信源符号按概率值分为大组,使个组的概率之和近似相同,并对各组赋予一个进制码元“0”“1” 、”2”、”3”。将每一大组的信源符号再分为组,使划分后的个组的概率之和近似相同,并对各组赋予一个进制符号“0”“1” 、”2”、”3”。如此重复,直至每个组只剩下一个信源符号为止。信源符号所对应的码字即为费诺码。按照编码的二叉树从树根开始,按译码序列进行逐个的向其叶子结点走,直到找到相应的信源符号为止。之后再把指示标记回调到树根,按照同样的方式进行下一序列的译码到序列结束。如果整个译码序列能够完整的译出则返回成功,否则则返回译码失败。 费诺编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率,编码效率高,但它属于概率匹配编码它不是最佳的编码方法。 7.四元费诺编码思想与函数模块划分 四元费诺编码主要在二元费诺编码的基础上修改编码函数,即二元费诺编码每次递归分两组,四元费诺编码每次就要分为四组。具体修改方法如下: //递归结束条件 if(end-begin==0) return; else if (end-begin==1){ a[begin].code=a[begin].code+0; a[begin+1].code=a[begin+1].code+1; return;} else if(end-begin==2){ a[begin].code=a[begin].code+0; a[begin+1].code=a[begin+1].code+1; a[begin+2].code=a[begin+2].code+2; return;} else if(end-begin==3){ a[begin].code=a[begin].code+0; a[begin+1].code=a[begin+1].code+1; a[begin+2].code=a[begin+2].code+2; a[begin+3].code=a[begin+3].code+3; return;} else for(int i=begin;i=end;i++){ sum+=a[i].weight; temp1=Math.abs(sum-total/4); if(temp1=old1) { forwd=i; fsum=sum; a[i].code=a[i].code+0; old1=temp1;} else { temp2=Math.abs(sum-fsum-total/4); if (temp2=old2){ mid=i; msum=sum-fsum; a[i].code=a[i].code+1; old2=temp2;} else{ temp3=Math.abs(sum-fsum-msum-total/4); if(temp3=old3){ last=i; lsum=sum-fsum-m

文档评论(0)

南非的朋友 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档