版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 电气信息学院实 验 报 告 书课程名称: 信息论与编码 实验项目: 线性分组码编译码实验报告 专业班组: 通信工程201班 实验时间: 2016年 6月27日 成绩评定:_评阅老师:_报告撰写人:余佩 学号:50 一、实验目的1进一步学习C+语言概念和熟悉VC 编程环境。2学习线性分组码编码基本流程, 学会调试线性分组码程序。二、实验要求:(1)实验前编写源程序、准备测试数据。(2)在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。三、实验内容对(7,4)码依据生成矩阵 对输入数据进行编译码。#include<
2、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 H37, C107,M104,B207,Input1
3、00,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以外的数。请在使用的过程中严格按照编译器要求的格式输入数据。nn");printf(&qu
4、ot;现在请输入您所选择的编译器所对应的序号,按回车键继续: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)/*编码程序。依据C=mG*/printf("n请输入
5、您需要编码的信息组数");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】【101】【001】【100】*/Ci2=Mi3Mi2
6、Mi1;/*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);/*C6=m3;C5=m2;C4=m1;C3=m0*/pr
7、intf("n");/*输出编码结果【】【】【】【】*/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*/for(j=0;j<4;j+)Hij=Gji+4;/*P=QT*/for(j=4;j<7;j+)Hi
8、j=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");while(p)for(i=0;i+)scanf("%d",&Inputi);if
9、(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将接收码组每七位分为一个码组,如下:n"); for(i=0;i<u;i+)/*将码字分组以矩阵方式输出*/fo
10、r(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=1)s=1;else s=0;Si2-m=s;s=0;printf("nn伴随式S=n"
11、);/*输出伴随式*/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-;for(j=6;j>=0;j-)printf("%1d",Bij);printf(&q
12、uot;请您再次确认!");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("译出的信息序列为:");for(j=6;j>2;j-)printf("%d",Bij);break;case
13、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个码组有错误,正确的码组应为:",+i);i-;for(j=6;j>=0;j-)printf("%1d",B
14、ij);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-)printf("%d",Bij);break;case 6:Bi4=1Bi4;prin
15、tf("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(j=6;j>=0;j-)printf("%1d",Bij);printf(&quo
16、t;译出的信息序列为:");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("%d",Bij);break;printf("nn总的译码结果为:");for(
17、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;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 0101 1001 1110得到编码结果为:输入接受码组:1 0 1 1 0 0 1 0 1 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省厦门市志翔中学公开招聘事业单位非在编合同教师8人参考题库及完整答案详解【全优】
- 2026年湖南长沙宁乡市教育系统面向市内选调教师310人参考题库含答案详解【典型题】
- 2026四川启赛微电子有限公司招聘研发工程师等岗位2人笔试题库含答案详解(B卷)
- 内科学第二版试题及答案
- 低压电工试题测试题及答案
- 2026年安市经开第六中学教师招聘参考题库含答案详解(培优B卷)
- 临床精神病学试题及答案
- 江西日报社(报业传媒集团)2026年社会招聘笔试模拟试卷及答案详解(网校专用)
- 汽车智能化感知与分析系统
- 跨境电商服务链
- 2025年常州政府雇员笔试真题及答案
- 2026年南京铁道职业技术学院单招综合素质笔试备考题库带答案解析
- 酒店客房清洁服务补充协议
- 耳廓离断清创术后护理查房
- 雨课堂学堂在线学堂云《创新创业基础( 南京信工)》单元测试考核答案
- 2025高三英语高考高频短语搭配1000组
- 纪委舆情应对课件
- HJ 563-2010火电厂烟气脱硝工程技术规范 选择性非催化还原法
- 颌面赝复体智能化-洞察及研究
- 半导体激光在口腔科的应用
- 房颤护理课件
评论
0/150
提交评论