



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、原理与步骤在随机信道中,错码的出现是随机的,且错码之间是统计独立的。例如,由高斯白噪声引起的错码就具有这种性质。因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。这些监督码元和信息码元之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。不同的编码方法有不同的检错或纠错能力。有的编码就只能检错不能纠错。汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。汉明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在汉明码中的全部传输码字是由原来的信息和附加的奇偶监督位组成的。每一个这种奇偶位被编在传输码字的特定比特位置上。推导并使用长度为m位的码字的汉明码,所需步骤如下: 1、确定最小的监督位数k,将它们记成D1、D2、Dk,每个监督位符合不同的奇偶测试规定。 2、原有信息和k个监督位一起编成长为m+k位的新码字。选择k监督位(0或1)以满足必要的奇偶条件。 3、对所接收的信息作所需的k个奇偶检查。 4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。 如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。2、算法描述一个二元(7,4)汉明码的系统码形式的矩阵和校验矩阵分别为1 0 0 0 1 0 1 1 1 1 0 1 0 0G= 0 1 0 0 1 1 1 H= 0 1 1 1 0 1 00 0 1 0 1 1 0 1 1 0 1 0 0 10 0 0 1 0 1 1等价的编码方程为Ci=mi , i=0,1,2,3C4=m0+m1+m2C5=m1+m2+m3C6=m0+m1+m33、源程序及注释void main() int aa10000;int i; int N; int b47=1,0,0,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1;/定义生成矩阵 int y=0,s=0;int j,k,m;int a4,q7,rr10000/4*7;int p,D=0;int cc2500,dd2500;int e87=1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0;/定义错误图样 int w10000/4*7;int H73=1,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,0,1; int A=0,M=0,L=8;int f3;int ww10000/4*7;printf(汉明(7,4)码的编码与译码程序:n);printf(请输入你想产生的二进制个数:);scanf(%d,&N); /输入想产生的信源的个数while(N4) printf(输入无效,请重新输入 ); printf(请输入你想产生的二进制个数:); scanf(%d,&N); printf(随机产生的二进制序列为:n); srand( (unsigned)time( NULL ) ); /产生一个随机序列,并把它放入a中for(i=0;iN;i+)aai=rand()%2; printf(%d,aai);printf(n);printf(编码后变为:n);/编码生成码字for(m=0;mN/4;m+) for(i=y;i(y+4);i+)ai-y=aai; /取出4位出来 for (j=0;j7;j+) qj=0;for(k=0;k4;k+)qj+=ak*bkj;/与生成矩阵相乘 for(i=s;i(s+7);i+)rri=0; rri=qi-s%2; printf(%d,rri);/将生成的放入rr中 y=y+4;/向后移动4位 s=s+7;/向后移动7位 printf(n);printf(经过信道后变为:n);srand( (unsigned)time( NULL ) );for(j=0;jN/4;j+) ccj=rand()%100;/产生一个099的随机数if(ccj9)/当随机数小于9时,一个码字产生2个错误for(i=D;i=9)&(ccj=30)/当随机数在930时,一个码字产生一个错误ddj=rand()%7; p=ddj; /随机产生一个06的数,以确定是码字一个错误的位置for(i=D;i(D+7);i+)wi=0;wi=(rri+epi-D)%2; printf(%d,wi);else /当随机数在3099时,不发生错误for(i=D;i(D+7);i+)wi=0;wi=rri; printf(%d,wi);D=D+7;/向后移动7位printf(%6d,ccj);/进行跟踪,以确定码字错几位printf(n);printf(经过译码后变为: n);for(i=0;iN/4;i+)for(j=0;j3;j+)fj=0;for(k=A;kA+7;k+)fj+=wk*Hk-Aj;/计算伴随式for(m=0;m7;m+)for(j=0;j3;j+) if(fj%2)=Hmj)M=M+1; if(M=3)L=m ;M=0;/清零 /根据伴随式找到出错的位置 for(m=0;m7;m+)if(m=L)wwA+m=(wA+m+1)%2;/将出错的地方更正 printf(%d,wwA+m);elsewwA+m=wA+m;printf(%d,wwA+m);/没有出错的地方A=A+7;/向后移动7位 L=8;/复位 M=0;/清零,复位printf(n);4、运行输出结果实例5、实验总结这次的实验是实现汉明码的编码与译码,达到纠错功能。通过信息论的课程,我基本了解了汉明码编译的原理和方法,但在编程的过程中遇到了不小的困难。首先还是理解汉明码概念的问题,因为还存在纠错的功能,所以汉明码的编码方式和以前学的哈夫曼编码或Fano编码比起来要复杂不少,开始的时候理解起来有些困难。不过通过仔细看PPT,很快就弄懂了汉明码的原理。但是最开始编出来的程序运行的结果总是不正确,和书上的码字不一样,后来发现是在校验矩阵上出了问题,自己对矩阵方面的知识一直把握得不是很好。经过调试,程序很快就能够正确运行了。到现在为止,我已经学了C语言程序设计、数据结构等课程,这次的信息论与编码实验让我感
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑竞赛线上活动方案设计
- 大学生消费扶贫营销方案
- 智慧零售明星营销方案
- 心理咨询推广方案
- 装修地面工程施工方案
- 钢结构施工方案大全电话
- 信息化网络营销方案
- 故宫文创的营销活动方案
- 东莞火灾显示盘施工方案
- 餐饮商业策划咨询方案
- 疥疮教学课件
- 胖东来评定管理制度
- 2025至2030中国内蒙古粮食仓储行业项目调研及市场前景预测评估报告
- 虹口区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
- 未婚生子小孩抚养协议书
- 测量安全培训实施要点
- 无偿搭车免责协议书
- 中国补习班行业市场发展现状及前景趋势与投资分析研究报告2025-2028版
- 认识机械设计与制造专业
- 《电生理导航系统》课件
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
评论
0/150
提交评论