实验三循环码的编码和译码程序设计.docVIP

实验三循环码的编码和译码程序设计.doc

  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文档。上传文档
查看更多
实验三循环码的编码和译码程序设计

实验四 循环码的编码和译码程序设计一、实验目的: 1.通过实验了解循环码的工作原理。 2.了解生成多项式g(x)与编码、译码的关系。 3.了解码距d与纠、检错能力之间的关系。 4.分析(7.3)循环码的纠错能力。二、实验要求: 1、编、译码用上述的计算法程序框图编写。 2、计算出所有的码字集合,可纠的错误图样E(x)表和对应的错误伴随式表。 3、考查和分析该码检、纠一、二位错误的能力情况。 4、整理好所有的程序清单,变量名尽量用程序框图所给名称,并作注释。 5、出示软件报告. C(x)= Cn-1xn-1+Cn-2xn-2+…C1x+C0。 码字的生成多项式为: g(x)=gr-1xr-1gr-2xr-2+…+g1x+g0 待编码的信息多项式为: m(x)=mK-1xK-1+…+m0 xn-k.m(x)=Cn-1xn-1+…+Cn-Kxn-K 对于系统码有: Cn-1=mK-1,Cn-2=mK-2,…Cn-K=Cr=m0 设监督多项式为: r(x)=Cr-1Xr-1+…+C1x+C0 根据循环码的定义,则有: C(x)=xn-Km(x)+r(x)=q(x).g(x) Xn-Km(x)=q(x).g(x)+r(x) r(x)=Rg(x)[xn-Km(x)] 即监督多项式是将多项式xn-Km(x)除以g(x)所得的余式。 编码过程就是如何根据生成多项式完成除法运算求取监督多项式的过程。 设循环码(7.3)码的字多项式为: C(x)=C6x6+C5x5+C4x4+C3x3+C2x2C1x+C0 (n=7) 生成多项式为: g(x)=x4+x2+x+1 信息多项式为: m(x)=m2x2+m1x+m0 (k=3), 设m(x)=x2+x 监督多项式为: r(x)= Cr-1Xr-1+…+C1x+C0 根据循环码的定义:生成多项式的倍式均是码字,编码实际上是做xn-km(x)除以g(x)的 运算求得r(x)。 编码程序框图见图8.1(a)左,二进制多项式除法示意图见图8.1(b)。 2、译码原理 设R(x)为接收码字多项式,E(x)为错误图样多项式,S(x)为伴随式,则根据循环码的性质有: S(x)=Rg(x)[R(x)]=Rg(x)[E(x)] 当R(x)=C(x)时,有E(x)=0,S(x)=0 当R(x)不等于C(x)时,有E(x)为非0,S(x)为非0 (a)编码计算程序框图 (b)二进制多项式除法示意图 图8.1编码计算程序框图及多项式除法示意图 译码过程如下: 计算每一种可能被纠的错误图样E(x)的伴随式, Si(x)=Rg(x)[E(x)] 本地作数据表存储好。 根据已接收码字多项式R(x),计算相应的伴随式: S(x)=Rg(x)[R(x)] 将实际接收码字求出的S(x)与本地存储的各Si(x)相比较,查出两者相等的那个唯一匹配的Si(x),找出并得到相应的错误图样E(x)。 (4) 纠错: C(x)=R(x)+E(x) 否则由S(x)找不出唯一匹配的Si(x),则报出错信息,表示出现不可纠错的错误图样,即码元出错的个数超出该循环码的纠错能力。 译码流程图8.2所示: 四、算法源代码: #include stdio.h #include string.h #define n 7 #define k 3 void main() { int C[n],D[n]; int i,l,b,r=n-k; printf((%d,%d)循环码编码如下:\n,n,k); for(int m=7;m=0;m--) { int G[n]={1,1,1,0,1,0,0}; //G←g(x) int j=m; for(i=0,l=4;ik;i++,j=j%l,l=l/2) //十进制转化为二进制 C[i]=j/l; for(i=0;i

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档