收藏 分享(赏)

汉明码编码译码实验报告(信息论与编码)及源程序.doc

上传人:精品资料 文档编号:10631560 上传时间:2019-12-10 格式:DOC 页数:5 大小:46.45KB
下载 相关 举报
汉明码编码译码实验报告(信息论与编码)及源程序.doc_第1页
第1页 / 共5页
汉明码编码译码实验报告(信息论与编码)及源程序.doc_第2页
第2页 / 共5页
汉明码编码译码实验报告(信息论与编码)及源程序.doc_第3页
第3页 / 共5页
汉明码编码译码实验报告(信息论与编码)及源程序.doc_第4页
第4页 / 共5页
汉明码编码译码实验报告(信息论与编码)及源程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1、原理与步骤在随机信道中,错码的出现是随机的,且错码之间是统计独立的。例如,由高斯白噪声引起的错码就具有这种性质。因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。这些监督码元和信息码元之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。不同的编码方法有不同的检错或纠错能力。有的编码就只能检错不能纠错。汉明码是一种能够纠正一位错码且

2、编码效率较高的线性分组码。汉明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在汉明码中的全部传输码字是由原来的信息和附加的奇偶监督位组成的。每一个这种奇偶位被编在传输码字的特定比特位置上。推导并使用长度为 m 位的码字的汉明码,所需步骤如下: 1、确定最小的监督位数 k,将它们记成 D1、D2、 Dk,每个监督位符合不同的奇偶测试规定。2、原有信息和 k 个监督位一起编成长为 m+k 位的新码字。选择 k 监督位(0 或 1)以满足必要的奇偶条件。 3、对所接收的信息作所需的 k 个奇偶检查。 4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。 如果发现

3、有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。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

4、,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,

5、0,1;int A=0,M=0,L=8;int f3;int ww10000/4*7;printf(“汉明(7,4)码的编码与译码程序 :n“);printf(“请输入你想产生的二进制个数:“);scanf(“%d“, /输入想产生的信源的个数while(N=9)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;/

6、向后移动 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

7、+m=wA+m;printf(“%d“,wwA+m);/没有出错的地方A=A+7;/向后移动 7 位L=8;/复位M=0;/清零,复位printf(“n“);4、运行输出结果实例5、实验总结这次的实验是实现汉明码的编码与译码,达到纠错功能。通过信息论的课程,我基本了解了汉明码编译的原理和方法,但在编程的过程中遇到了不小的困难。首先还是理解汉明码概念的问题,因为还存在纠错的功能,所以汉明码的编码方式和以前学的哈夫曼编码或 Fano 编码比起来要复杂不少,开始的时候理解起来有些困难。不过通过仔细看 PPT,很快就弄懂了汉明码的原理。但是最开始编出来的程序运行的结果总是不正确,和书上的码字不一样,后来发现是在校验矩阵上出了问题,自己对矩阵方面的知识一直把握得不是很好。经过调试,程序很快就能够正确运行了。到现在为止,我已经学了 C 语言程序设计、数据结构等课程,这次的信息论与编码实验让我感觉到以前学习的东西有了用武之地,把知识和理论付诸实践才能有所提高。在编程的过程中,我发现自己的编程能力还非常有待提高,以前 C 语言课程里的很多知识掌握还不牢,时常需要翻书查阅。对信息论与编码这门课的学习还要加深,只有深刻理解了要做的事情,才能把事情做好。以后我要更加努力,逐步解决这些问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报