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

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

ID:49692061

大小:46.45 KB

页数:5页

时间:2020-03-03

汉明码编码译码实验报告 信息论与编码 及源程序.doc_第1页
汉明码编码译码实验报告 信息论与编码 及源程序.doc_第2页
汉明码编码译码实验报告 信息论与编码 及源程序.doc_第3页
汉明码编码译码实验报告 信息论与编码 及源程序.doc_第4页
汉明码编码译码实验报告 信息论与编码 及源程序.doc_第5页
资源描述:

《汉明码编码译码实验报告 信息论与编码 及源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

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

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

3、息作所需的k个奇偶检查。4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。2、算法描述一个二元(7,4)汉明码的系统码形式的矩阵和校验矩阵分别为10001011110100G=0100111H=0111010001011011010010001011等价的编码方程为Ci=mi,i=0,1,2,3C4=m0+m1+m2C5=m1+m2+m3C6=m0+m1+m33、源程序及注释voidmain(){intaa[10000];inti;intN;intb[4][7]=

4、{{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}};//定义生成矩阵inty=0,s=0;intj,k,m;inta[4],q[7],rr[10000/4*7];intp,D=0;intcc[2500],dd[2500];inte[8][7]={{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,

5、0,1},{1,1,0,0,0,0,0}};//定义错误图样intw[10000/4*7];intH[7][3]={{1,0,1},{1,1,1},{1,1,0},{0,1,1},{1,0,0},{0,1,0},{0,0,1}};intA=0,M=0,L=8;intf[3];intww[10000/4*7];printf("汉明(7,4)码的编码与译码程序:");printf("请输入你想产生的二进制个数:");scanf("%d",&N);//输入想产生的信源的个数while(N<4){printf("输入无效,请重新输入");

6、printf("请输入你想产生的二进制个数:");scanf("%d",&N);}printf("随机产生的二进制序列为:");srand((unsigned)time(NULL));//产生一个随机序列,并把它放入a[]中for(i=0;i

7、for(j=0;j<7;j++){q[j]=0;for(k=0;k<4;k++)q[j]+=a[k]*b[k][j];/////与生成矩阵相乘}for(i=s;i<(s+7);i++){rr[i]=0;rr[i]=q[i-s]%2;printf("%d",rr[i]);////将生成的放入rr[]中}y=y+4;////向后移动4位s=s+7;///向后移动7位printf("");}printf("经过信道后变为:");srand((unsigned)time(NULL));for(j=0;j

8、rand()%100;////产生一个0~99的随机数if(cc[j]<9)////当随机数小于9时,一个码字产生2个错误{for(i=D;i<(D+7);i++){w[i]=0;w[i]=(rr[i]+e[7][i-D

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。