课程设计(论文)-基于C语言的线性分组码编译器设计

上传人:aa****6 文档编号:29271587 上传时间:2018-01-23 格式:DOC 页数:23 大小:2.60MB
返回 下载 相关 举报
课程设计(论文)-基于C语言的线性分组码编译器设计_第1页
第1页 / 共23页
课程设计(论文)-基于C语言的线性分组码编译器设计_第2页
第2页 / 共23页
课程设计(论文)-基于C语言的线性分组码编译器设计_第3页
第3页 / 共23页
课程设计(论文)-基于C语言的线性分组码编译器设计_第4页
第4页 / 共23页
课程设计(论文)-基于C语言的线性分组码编译器设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《课程设计(论文)-基于C语言的线性分组码编译器设计》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于C语言的线性分组码编译器设计(23页珍藏版)》请在金锄头文库上搜索。

1、摘要本文是应用 C 语言对(7,3)线性分组码的编译码的软件设计。主要做了以下几项工作:对三位正确的信息码进行编码;若输入的三位信息码有错,系统输出提醒,可以重新输入;对七位接收到的码字判断是否有错,并在无错和有一位错误时进行译码,在有多位错误时输出提醒,可以选择重新输入。关键字:线性分组码,编码,译码,C 语言目录一线性分组码的基本概念 .11.线性分组码 .12.码重(汉明重量) .13.码距(汉明距离) .14.最小码距与码的抗干扰能力之间的关系 .15.主要性质 .2二编码原理 .2三译码原理 .31.译码原理简述 .32.监督矩阵的计算 .33.伴随式的计算 .4四编译码的软件实现

2、.51.C 语言平台简介 .52.C 语言实现编译码的思想 .53.整体流程图 .64.编码流程图 .65.译码流程图 .76.基于 C 语言程序的设计 .87.运行及结果分析 .8总结 .13附录:参考程序 .14参考文献 .211一线性分组码的基本概念1.线性分组码线性分组码是一组固定长度的码组,可表示为(n , k) ,通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k 个信息位被编为 n 位码组长度,而 n-k 个监督位的作用就是实现检错与纠错。当分组码的信息码元与监督码元之间的关系为线性关系时,这种分组码就称为线性分组码。对于长度为 n 的二进制线性分组

3、码,它有 n2种可能的码组 n2,从种码组中,可以选择kM2个码组(k#include#include/*函数声明*/void Begin();void Code();void Decoding();/*主函数*/main()printf(n 这是(7,3)线性分组码的编译码及验证的软件设计:n);printf(n);15Begin();void Begin()char ch;fflush(stdin);printf( -n);printf(n);printf( - 输入c代表编码函数 Code -);printf(n);printf(n);printf( - 输入d代表译码函数 Decodi

4、ng -);printf(n);printf(n);printf( -n);ch=getchar();if(ch=c)Code();else if(ch=d)Decoding();void Code()int C13,C27;int i;printf(输入三位信息码:n);for(i=0;i3;i+)scanf( %d,for(i=0;i3;i+)if(C1i!=0&C1i!=1)printf(输入的信息码有错,请检查后重新选择输入n);16Begin();for(i=0;i3;i+)C2i=C1i;C23=C10+C12;C24=C10+C11+C12;C25=C10+C11;C26=C11

5、+C12;for(i=0;i7;i+)if(C2i=2)C2i=0;else if(C2i=3)C2i=1;printf(编码结果为:n);for(i=0;i7;i+)printf( %d,C2i);printf(n);printf(_n);Begin();void Decoding()int G37,P34,Q43,R17,HT73,R27,C3;int H47=0,S4=0,E7=0;int i,j,n,k,t=0;printf(n 输入生成矩阵 G:n);for(i=0;i3;i+)for(j=0;j7;j+)scanf( %d,printf(n 计算出矩阵 P:n);17for(i=0

6、;i3;i+)for(j=3;j7;j+)Pij-3=Gij;for(i=0;i3;i+)for(j=0;j4;j+)printf(%20d,Pij);printf(n);printf(计算出矩阵 Q:n);for(i=0;i3;i+)for(j=0;j4;j+)Qji=Pij;for(i=0;i4;i+)for(j=0;j3;j+)printf(%26d,Qij);printf( );printf(n);printf(计算监督矩阵 H:n);for(i=0;i4;i+)for(j=0;j3;j+)Hij=Qij;for(i=0;i4;i+)j=3;Hii+j=1;for(i=0;i4;i+)

7、for(j=0;j7;j+)18printf(%11d,Hij);printf( );printf(n);printf(计算 H 的转置矩阵 HT:n);for(i=0;i4;i+)for(j=0;j7;j+)HTji=Hij;for(i=0;i7;i+)for(j=0;j4;j+)printf(%20d,HTij);printf(n);printf(输入接收到的码字 R1:n);for(i=0;i7;i+)scanf( %d,printf(计算伴随式 S:n);for(i=0;i4;i+)for(j=0;j7;j+)Si=Si+R1j*HTji;for(i=0;i4;i+)if(Si%2=0

8、)Si=0;else if(Si%2=1)Si=1;for(i=0;i4;i+)printf(%2d,Si);printf(n_n);for(i=0;i4;i+)19t=t+Si;/*当 S=0 时,接收端认为传输无错。但是实际上,也可能存在多个错误,把此事的错误成为不可就错误。*/if(t=0)printf(接收端认为接受的码字 R1 无错,此时错误图样 E 为:);for(i=0;i7;i+)printf(%2d,Ei);for(i=0;i7;i+)R2i=R1i+Ei;if(R2i=2)R2i=0;for(i=0;i3;i+)Ci=R2i;printf(n 译码结果 C 为:n);for

9、(i=0;i3;i+)printf(%2d,Ci);printf(n_n);if(t!=0) for(k=0;k7;k+)for(j=0,n=0;j4;j+)if(Sj=HTkj)n+;/*S=HT 中的某一行时,有一个错误或者多个错误。若是一个错误,系统可以正确纠正,若是多个错误,按此方法纠错,会做出错误纠正。*/while(n=4)Ek=1;20printf(此时接受的码字有一个错误,错误图样 E 为:n);for(i=0;i7;i+)printf(%2d,Ei);for(i=0;i7;i+)R2i=R1i+Ei;if(R2i=2)R2i=0;for(i=0;i3;i+)Ci=R2i;printf(n 译码结果 C 为:n);for(i=0;i3;i+)printf(%2d,Ci);printf(n_n);Begin();break;/*S!=HT 中的任意一行时,系统只能检错不能纠错。*/while(k=7)printf(n 此时接收到的码字有错,但不能确定错误图样。n);printf(n_

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号