《线性分组码编译码实验报告(共10页).doc》由会员分享,可在线阅读,更多相关《线性分组码编译码实验报告(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 电气信息学院实 验 报 告 书课程名称: 信息论与编码 实验项目: 线性分组码编译码实验报告 专业班组: 通信工程201班 实验时间: 2016年 6月27日 成绩评定:_评阅老师:_报告撰写人:余佩 学号:50 一、实验目的1进一步学习C+语言概念和熟悉VC 编程环境。2学习线性分组码编码基本流程, 学会调试线性分组码程序。二、实验要求:(1)实验前编写源程序、准备测试数据。(2)在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。三、实验内容对(7,4)码依据生成矩阵 对输入数据进行编译码。#include#inc
2、ludevoid main()/*G:生成矩阵 H:监督矩阵 HT:监督矩阵对应的转置矩阵*/*M:输入信息序列 C:编码输出序列 Input:输入接收码序列 B:译码输出序列 S:伴随式*/int Q,N;/*定义开始*/int i,j,s,r,k,t,p,u,m; int G47=1,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,1;/*定义生成矩阵=I4*Q*/int IR33=1,0,0,0,1,0,0,0,1;int H37, C107,M104,B207,Input100,HT73,P10,S1003;/*定义结束*/pri
3、ntf(n您好!欢迎使用线性分组码编译器!n);printf(nn本编译器针对(7,4)码,所采用的生成矩阵G=n);for(i=0;i4;i+)for(j=0;j7;j+)printf( %d,Gij);printf(n);printf(编译码过程都是针对二进制码组,除了系统要求选择功能,其他情况下禁止输入除0,1以外的数。请在使用的过程中严格按照编译器要求的格式输入数据。nn);printf(现在请输入您所选择的编译器所对应的序号,按回车键继续:n);printf(n1.编码器 2.译码器 3.退出n);printf(n我选择:);scanf(%d,&Q);if(Q=0)Q+=4;whil
4、e(Q)if(Q=1|Q=2|Q=3)break;elseprintf(对不起,您输入有误,请重新输入);scanf(%d,&Q);while(Q=1|Q=2|Q=3)if(Q=1)/*编码程序。依据C=mG*/printf(n请输入您需要编码的信息组数);scanf(%d,&N);printf(nn请输入您需要编码的%d组四位二进制信息组,码组间用空格分开,按回车键确认。n,N);/*输入信息码*/printf(n信息组m=);for(i=0;iN;i+)scanf(%1d%1d%1d%1d,&Mi3,&Mi2,&Mi1,&Mi0);/*求监督码*/for(i=0;iN;i+)/*求C2-C
5、0的值【001】【101】【001】【100】*/Ci2=Mi3Mi2Mi1;/*C2=m3+m2+m1*/Ci1=Mi3Mi2Mi0;/*C1=m3+m2+m0*/Ci0=Mi3Mi1Mi0;/*C0=m3+m1+m0*/for(j=0;j2;i-)/*输出编码结果*/Cji=Mji-3;/*求C6-C3的值【1100】【0101】【1011】【1110】*/printf(n您所输入的信息组编码结果c=n);for(j=0;j=0;i-)printf(%d,Cji);/*C6=m3;C5=m2;C4=m1;C3=m0*/printf(n);/*输出编码结果【】【】【】【】*/printf(n
6、);printf(n接下来您想:nn);/*选择功能*/printf(1.用编码器 2.用译码器 3.退出nn);printf(我想:);scanf(%d,&Q);else if(Q=2)/*译码程序*/for(i=0;i3;i+)/*求监督矩阵=P*I3*/for(j=0;j4;j+)Hij=Gji+4;/*P=QT*/for(j=4;j7;j+)Hij=IRij-4;/*I3*/printf(n监督矩阵H=n);/*输出监督矩阵*/for(i=0;i3;i+)for(j=0;j7;j+)printf( %d,Hij);printf(n);t=1;while(t!=2)/*输入接收码组*/p
7、=1;printf(n请输入总位数为7的倍数的接收码组,每位用空格隔开,每组位数为7的倍数,以十进制2作为结束标志!按回车键确认n);while(p)for(i=0;i+)scanf(%d,&Inputi);if(Inputi=2)/*判断是否为结尾标志*/break;k=i%7;/*输入个数对7求余*/if(k=0)p=0;t=2;elsep=1;k=-k+7;printf(您接收到的码组丢失了%d位,系统不能判断丢失位的具体位置,请重新输入n,k);u=i/7;/*求有接受码的组数*/i=0;for(r=0;r=0;j-,i+)Brj=Inputi;/*将输入的码字编入矩阵*/printf
8、(n将接收码组每七位分为一个码组,如下:n); for(i=0;iu;i+)/*将码字分组以矩阵方式输出*/for(j=0;j7;j+)printf( %1d,Bi6-j);printf(n);for(i=0;i3;i+)/*求监督矩阵H的转置矩阵*/for(j=0;j7;j+)HTji=Hij;/*求伴随矩阵S=R*HT*/for(i=0;iu;i+)/*行*/for(m=0;m3;m+)/*列*/for(j=0;j7;j+)s+=(Bi6-j*HTjm);/*伴随矩阵的第i行的值*/if (s%2=1)s=1;else s=0;Si2-m=s;s=0;printf(nn伴随式S=n);/*
9、输出伴随式*/for(j=0;j=0;i-)printf( %1d,Sji);printf(n);printf(n);for(i=0;i=0;j-)printf(%1d,Bij);printf(请您再次确认!);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 2:Bi0=1Bi0;printf(nn您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;ca
10、se 3:Bi1=1Bi1;printf(nn您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 4:Bi3=1Bi3;printf(nn您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 5:Bi2=1Bi2;printf(n
11、n您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 6:Bi4=1Bi4;printf(nn您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 7:Bi5=1Bi5;printf(nn您接收的第%d个码组有错误,正确的码组应为
12、:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;case 8:Bi6=1Bi6;printf(nn您接收的第%d个码组有错误,正确的码组应为:,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf(译出的信息序列为:);for(j=6;j2;j-)printf(%d,Bij);break;printf(nn总的译码结果为:);for(i=0;i2;j-)printf(%1d,Bij);printf(nn接下来您想:nn);
13、/*继续选择功能*/printf(1.用编码器 2.用译码器 3.退出nn);printf(我想:);scanf(%d,&Q);if(Q=0)Q=Q+4;while(Q)if(Q=1|Q=2|Q=3)break;elseprintf(对不起,您输入有误,请重新输入);scanf(%d,&Q);else if(Q=3)/*退出程序*/printf(n谢谢您的使用,欢迎再次使用!n);Q=0;4 流程图输入3输入3输入2输入1输入2输入1开 始欢迎界面1.编码器 2.译码器 3.退出译码程序退出提示持续操作1.编码器 2.译码器 3.退出退 出编码程序五、实验数据记录及分析输入信息码组:1011
14、0101 1001 1110得到编码结果为:输入接受码组:1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0并以2结尾得到译码结果为均正确,译码为:111104、 实验心得体会 实验较为复杂,自己思考了很多次也编程了几次之后结果不是很准确,得不得想要的结果,就和做好的同学探讨并进行学习借鉴最终才成功,从理论上的实现到实际实验得出正确的结果还是有一定能力要求的。通过实验,将课本上的理论知识与实际结合起来,进一步加深了对线性分组码的理解和运用,并结合了上学期的通信原理做了更细致的理解。在实验过程中,我们经过对程序进行分析与调试后,找了个例子,运行的出来的结果与计算结果完全符合。 专心-专注-专业