- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.信息论编码作业
小组成员:吴湛S1209G106、彭利S1409W0516、王红建S140900748
文件说明:信息论作业。要求是信源编码、信道编码、信道加噪声、信道译码、信源译码。此程序已实现信源编码和信源译码,信道加噪声,信道编码和信道译码的功能。
信源编码的具体实现方法:
对于霍夫曼编码时的字符概率统计方法(这里并非是求出字符概率,因为概率和字符出现的频率是倍数关系,所以这里直接使用字符的频率),首先创建一个表头,当读入一个字符时就去查寻这个链表(详见link_func.c中的find函数),若发现已有读入的这个字符,那么就在匹配的结构单元中num成员加一,如果没有匹配的结构单元说明发现了一个新字符,就在链表最后加一节点(详见link_func.c中的add_unit函数)。
对于霍夫曼编码时的编码具体实现方法如下示意图所示:
对链表进行排序(详见link_func.c中的char_sort函数),并将最后两个分别赋1和0,如图一所示。(这里排序用冒泡法的思想对链表排序,当两个字符的次数相等时,也进行字符的交换,这样可减小编码长度的方差。对于节点的赋值,见link_func.c中的set_num函数,当被赋值的节点存在brothe支链时,该支链上的所有节点都赋于此值)。
图一
2)将最后一个num的值加到前一个num的值上,并将最后一个节点挂到前一个节点的brothe支链上的最后一个位置,排序,再将最后两个节点分别赋1和0,若存在brothe 支链,则连同支链上的所有节点设置相应的值。如图二所示。
图二
将最后一个num的值加到前一个num的值上,并将最后一个节点挂到前一个节点的brothe支链上的最后一个位置,排序,再将最后两个节点分别赋1和0,若存在brothe 支链,则连同支链上的所有节点设置相应的值。如图三所示。
图三
将最后一个num的值加到前一个num的值上,并将最后一个节点挂到前一个节点的brothe支链上的最后一个位置,排序,再将最后两个节点分别赋1和0,若存在brothe 支链,则连同支链上的所有节点设置相应的值。如图四所示。
图四
将最后一个num的值加到前一个num的值上,并将最后一个节点挂到前一个节点的brothe支链上的最后一个位置,排序,再将最后两个节点分别赋1和0,若存在brothe 支链,则连同支链上的所有节点设置相应的值。如图五所示。
图五
最后将编码后的字符组成字符编码链表。如图六所示。
图六
信道编码和信道译码,是参考教材(7,4)汉明码,小组讨论认为没有创新,这里不细述,详见channel_coding.c和channel_decoding.c文件。
信道加噪声的实现方法是将信道编码的生成文件中的数据取出来,然后改变其中的某些数据后再写回去。小组讨论认为没有什么技巧,这里不述,具体实现见add_noise.c文件。
下面论述信源译码的具体实现方法:
在整理结构单元char_unit中coding数组时(详见link_func.c文件中的clean_up函数),coding数组的第一个位存放的是该字符的编码长度,从第二位开始存放字符的编码。
建一个长为最大编码长度的数据数组,(这个数组近似一个队列,这里它只有一个游动的指针和一个指向数组首地址的数组名)。
第一次从信道译码生成文件中读出最大编码长度的数据,然后将这串数据与编码链表进行比对,当然,必然能成功比对一个字符,否则这个程序是有问题的。
利用指向数据数组的游动指针同coding数组中的编码进行比对,若比对成功一次,就将该字符写入信源译码生成文件中,并且将未对比的数据依次向前移动该字符编码长度位到数据数组前端。
4)从信道译码生成文件中读出成功比对字符的编码长度数据到数据数组,也就是说将数据数组补充满,重复3)、4)直到信道译码生成文件结束。
接着上文的例子,些例的最大编码长度为3,所以建立一长度为3的数据数组。然后从信道译码生成文件中读入3个数据,假如读入如下所示的数据:
按照图六,它将成功比对出字符a,则将a写入信源译码生成文件,然后未比对的数据0前移2位,如下图所示:
从信道译码生成文件中读出2个数据到数据数组中,将数组填满,如下图所示:
这串数据将成功比对出字符d,重复上述步骤,直到信道译码生成文件结束。
最终运行效果如下:
图七
全部运行时间为7.3s
您可能关注的文档
- 初级会计实务_第七章财务第三节_2010年版要点解析.doc
- 初级会计实务_第一章第七节无形资产及其他资产_2011年版要点解析.doc
- 初级会计实务2015第1章资产要点解析.doc
- 初级会计职称考试《初级会计实务(强化班)-第八章产品成本核算》内容讲义、考情、视频下载要点解析.doc
- 初级金融专业知识与实务_模拟试题三在线测试_2010年版要点解析.doc
- 初级经济法基础_第六章税收征收管理法律制度_2010年版要点解析.doc
- 初级经济法基础_第四章第三节营业税法律制度_2013年版要点解析.doc
- 初级经济法考试要点解析.doc
- 初级判断要点解析.doc
- 初级篇防火防爆基础知识要点解析.doc
文档评论(0)