线性分组码编译码实验报告-zw_第1页
线性分组码编译码实验报告-zw_第2页
线性分组码编译码实验报告-zw_第3页
线性分组码编译码实验报告-zw_第4页
线性分组码编译码实验报告-zw_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 电气信息学院实 验 报 告 书课程名称: 信息论与编码 实验项目: 线性分组码编译码实验报告 专业班组: 通信工程201班 实验时间: 2016年 6月27日 成绩评定:_评阅老师:_报告撰写人:张蔚 学号:2013141443032 一、实验目的1进一步学习C+语言概念和熟悉VC 编程环境。2学习线性分组码编码基本流程, 学会调试线性分组码程序。二、实验要求:(1)实验前编写源程序、准备测试数据。(2)在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。三、实验内容对(7,4)码依据生成矩阵 1000111010011000101010001

2、011 对输入数据进行编译码。#include<stdio.h>#include<math.h>void 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

3、 H37, C107,M104,B207,Input100,HT73,P10,S1003;/*定义结束*/printf("n您好!欢迎使用线性分组码编译器!n");printf("nn本编译器针对(7,4)码,所采用的生成矩阵G=n");for(i=0;i<4;i+)for(j=0;j<7;j+)printf(" %d",Gij);printf("n");printf("编译码过程都是针对二进制码组,除了系统要求选择功能,其他情况下禁止输入除0,1以外的数。请在使用的过程中严格按照编译器要求的

4、格式输入数据。nn");printf("现在请输入您所选择的编译器所对应的序号,按回车键继续:n");printf("n1.编码器 2.译码器 3.退出n");printf("n我选择:");scanf("%d",&Q);if(Q=0)Q+=4;while(Q)if(Q=1|Q=2|Q=3)break;elseprintf("对不起,您输入有误,请重新输入");scanf("%d",&Q);while(Q=1|Q=2|Q=3)if(Q=1)/*编码程

5、序。依据C=mG*/printf("n请输入您需要编码的信息组数");scanf("%d",&N);printf("nn请输入您需要编码的%d组四位二进制信息组,码组间用空格分开,按回车键确认。n",N);/*输入信息码*/printf("n信息组m=");for(i=0;i<N;i+)scanf("%1d%1d%1d%1d",&Mi3,&Mi2,&Mi1,&Mi0);/*求监督码*/for(i=0;i<N;i+)/*求C2-C0的值【001】

6、【101】【001】【100】*/Ci2=Mi3Mi2Mi1;/*C2=m3+m2+m1*/Ci1=Mi3Mi2Mi0;/*C1=m3+m2+m0*/Ci0=Mi3Mi1Mi0;/*C0=m3+m1+m0*/for(j=0;j<N;j+)for (i=6;i>2;i-)/*输出编码结果*/Cji=Mji-3;/*求C6-C3的值【1100】【0101】【1011】【1110】*/printf("n您所输入的信息组编码结果c=n");for(j=0;j<N;j+)for(i=6;i>=0;i-)printf("%d",Cji);/*

7、C6=m3;C5=m2;C4=m1;C3=m0*/printf("n");/*输出编码结果【1100001】【0101101】【1011001】【110100】*/printf("n");printf("n接下来您想:nn");/*选择功能*/printf("1.用编码器 2.用译码器 3.退出nn");printf("我想:");scanf("%d",&Q);else if(Q=2)/*译码程序*/for(i=0;i<3;i+)/*求监督矩阵=P*I3*/fo

8、r(j=0;j<4;j+)Hij=Gji+4;/*P=QT*/for(j=4;j<7;j+)Hij=IRij-4;/*I3*/printf("n监督矩阵H=n");/*输出监督矩阵*/for(i=0;i<3;i+)for(j=0;j<7;j+)printf(" %d",Hij);printf("n");t=1;while(t!=2)/*输入接收码组*/p=1;printf("n请输入总位数为7的倍数的接收码组,每位用空格隔开,每组位数为7的倍数,以十进制2作为结束标志!按回车键确认n");w

9、hile(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<u;r+)for(j=6;j>=0;j-,i+)Brj=Inputi;/*将输入的码字编入矩阵*/printf("n将接收码组每七位分为

10、一个码组,如下:n"); for(i=0;i<u;i+)/*将码字分组以矩阵方式输出*/for(j=0;j<7;j+)printf(" %1d",Bi6-j);printf("n");for(i=0;i<3;i+)/*求监督矩阵H的转置矩阵*/for(j=0;j<7;j+)HTji=Hij;/*求伴随矩阵S=R*HT*/for(i=0;i<u;i+)/*行*/for(m=0;m<3;m+)/*列*/for(j=0;j<7;j+)s+=(Bi6-j*HTjm);/*伴随矩阵的第i行的值*/if (s%2=

11、1)s=1;else s=0;Si2-m=s;s=0;printf("nn伴随式S=n");/*输出伴随式*/for(j=0;j<u;j+)for(i=2;i>=0;i-)printf(" %1d",Sji);printf("n");printf("n");for(i=0;i<u;i+)Pi=4*Si2+2*Si1+Si0+1;switch(Pi)/*根据伴随式判断接收码,并译码*/case 1:/*/printf("nn您所接收的第%d个码组正确,它是:",+i);i-;fo

12、r(j=6;j>=0;j-)printf("%1d",Bij);printf("请您再次确认!");printf("译出的信息序列为:");for(j=6;j>2;j-)printf("%d",Bij);break;case 2:Bi0=1Bi0;printf("nn您接收的第%d个码组有错误,正确的码组应为:",+i);i-;for(j=6;j>=0;j-)printf("%1d",Bij);printf("译出的信息序列为:");fo

13、r(j=6;j>2;j-)printf("%d",Bij);break;case 3:Bi1=1Bi1;printf("nn您接收的第%d个码组有错误,正确的码组应为:",+i);i-;for(j=6;j>=0;j-)printf("%1d",Bij);printf("译出的信息序列为:");for(j=6;j>2;j-)printf("%d",Bij);break;case 4:Bi3=1Bi3;printf("nn您接收的第%d个码组有错误,正确的码组应为:&qu

14、ot;,+i);i-;for(j=6;j>=0;j-)printf("%1d",Bij);printf("译出的信息序列为:");for(j=6;j>2;j-)printf("%d",Bij);break;case 5:Bi2=1Bi2;printf("nn您接收的第%d个码组有错误,正确的码组应为:",+i);i-;for(j=6;j>=0;j-)printf("%1d",Bij);printf("译出的信息序列为:");for(j=6;j>2;j-

15、)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;j>2;j-)printf("%d",Bij);break;case 7:Bi5=1Bi5;printf("nn您接收的第%d个码组有错误,正确的码组应为:",+i);i-;for(

16、j=6;j>=0;j-)printf("%1d",Bij);printf("译出的信息序列为:");for(j=6;j>2;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;j>2;j-)printf("%

17、d",Bij);break;printf("nn总的译码结果为:");for(i=0;i<u;i+)for(j=6;j>2;j-)printf("%1d",Bij);printf("nn接下来您想:nn");/*继续选择功能*/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;elseprint

18、f("对不起,您输入有误,请重新输入");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 0101 1001 1110得到编码结果为:1011001010110110011001110100输入接受码组: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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论