版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
海明编码实验报告实验目的:深刻理解海明编码,解码的原理,通过用代码将其实现掌握其中的技术。增强动手解决实际问题的能力以及编程,调试程序的能力。实验原理:主要思想:码字位的编号从左到右,最左边的比特是第一位;数据比特和监督比特融合在一起;监督位处于2的幕数位位置,其它的位置放置数据比特;编码后的码串为行向量,用它乘以生成矩阵后,采用奇偶校验方式,得2矩阵方程并求解该矩阵方程得到对应监督位的比特数值;p待发送的数据比特和比特一起构脸了发送编码码字** **p*海明纠错码的格式3 4 5码字的编号从左到右,最左边是第一位,其中2的幕数位是检验位,其余是k个数据位(信息元)。*---信息元P---校验位海明码的编码与译码的方法用矩阵乘法求检验位,并且找出错误位。设编码长度为n=2r-1,其数据位长度k用矩阵乘法求检验位,并且找出错误位。设编码长度为n=2r-1,其数据位长度k=nr。位数。brr-1r「b b—上;r—1rb(p校验位插入到编码序歹i|的*2j-l・)j=1,2,.1 ■'一列的矩阵。。.1曲r(样本)建立一个(2r-1)行*r将编码字写成串形式的一维向量=(llll)1234bbAbb1-1 2r-1 r-1其中,lr=1或0(1=0为偶校验,1=1为奇校验),bij=1或0例:对数据1100进行编码解:数据信息为40立1■取校验位数量为解:数据信息为40立1■取校验位数量为0羊0+0+〃+]+0+0=0⑴编码长度尸=2r-1=7 +^3+++=数据"=n-r=4 <0+P+1+0+0+0+0=0校验位1r=13 弓(pp1p100)12 3111100110101=(000)2p+0+1+0+1+0+0=0I1由矩阵乘法得,p1=0,p2=1,p3=1解得海明码为0111100(+表示异或运算)译码过程:收到海明码串以后,接收方把海明码串作为行向量,乘以相同的样本矩阵,检查约定的奇偶校验方式是否成立。类似编码过程,进行矩阵方程运算;如果方程运算以后右边的结果与约定的奇偶校验行向量一致,则结果正确;如果方程运算以后右边的结果与约定的奇偶校验行向量不一致,则表明传输的数据有错,且该结果行向量对应的二进制比特转换为十进制数所对应编号的比对例题所得到的海明编码结果0111100,那阿结果无错。特出错,把该比特0对例题所得到的海明编码结果0111100,那阿结果无错。0111100进行传输,如果接收到的也是1000,接收方的判断过程为:首先进行矩阵矩阵运算的结果行向量为(101),不是(000),接收到的码字有错误,错误比特的位置为5,因此,把0111000码串的第5个比特取反为“1”,则结果变为“0111100”,为正确的码字。实验过程:根据实验原理即可确定编程思路:令编码长度为7位,其中校验位为3位。将矩阵存入全局数组Matrix中,用函数code进行编码(偶校验),数组output保存编码。随机改变其中一位的值使之取反,然后用函数decode解码得到三位校验位的值,它们表示的二进制数即为出错位。代码如下:#include<stdio.h>#include<stdlib.h>intcheck_bit(inte,intx);〃指数函数,计算e^x,判断校验位在数组中的位置voidcode(int*in,int*output);〃编码函数,将随机输入的4位与3位校验位组合得到7位数组voiddecode(int*input,int*check);〃解码函数,判断出错位intconvertmsg(char*a,int*b);〃信息转换函数,将字符串转换为整型数组,返回值是数组元素个数intMatrix[3][7]={{0,0,0,1,1,1,1},{0,1,1,0,0,1,1},{1,0,1,0,1,0,1}};〃全局变量,用于存放运算的矩阵voidmain(){chara[20];//存放输入的比特intinput[4]={0};//存放转换后的4位比特intoutput[7]={0};//存放带校验位的7位比特intresult[3]={0};//存放解码的3位校验位inti,j,n;//用于判断和循环的变量i=0;j=0;printf("\nPleaseinputthe4-bit-massage:\n");/*为提高程序健壮性,输入在循环中进行,只有输入正确才能跳出循环,执行后面的运算*/while(j!=4||n!=0){n=0;scanf("%s",a);while(a[i])//逐位检测{if(a[i]!='0'&&a[i]!=T){n=1;break;//输入非0,1时出错}i++;}j=convertmsg(a,input);//把字符串转换为数组并统计位数if(j!=4||n!=0)//输入不是4位或有非0,1比特时报错printf("Errorinput!Pleasetryagain!\n");}code(input,output);//对输入与校验位进行编码printf("NowtheHammingcodeis:\n");for(i=0;i<7;i++)printf("%d",output[i]);randomize();n=random(7);//产生随机数确定出错位printf("\nThenassumetheerrorbitisNo.%d\n”,n+1);output[n]=output[n]?0:1;//出错位取反decode(output,result);//对出错后的编码取反printf("Afterdecodingweknowtheerrorbitis");for(i=0;i<3;i++)//输出校验位printf("%d",result[i]);}〃编码函数voidcode(int*in,int*output){inttemp[7]={1,1,1,1,1,1,1};//临时数组先全部置1inti=0,j=0,k=0;//用于循环,判断for(i=0;i<3;i++)temp[check_bit(2,i)-1]=0;//确定校验位并置0for(i=0;i<7;i++){if(temp[i])//把输入的数据存入没有置0的非校验位{temp[i]=in[j];output[i]=in[j];j++;}}for(i=0;i<3;i++)//将数组与矩阵进行乘法运算计算校验位{k=0;for(j=0;j<7;j++){if(temp[j]&&Matrix[i][j])k++;}if(k%2)//根据偶校验运算规则,若1的个数为偶数则校验位为1output[check_bit(2,2-i)-1]=1;}〃指数函数,确定校验位intcheck_bit(inte,intx){inttemp=1;while(x){temp*=e;x--;}returntemp;}〃解码函数,原理同编码函数,check存放校验位voiddecode(int*input,int*check){inti=0,j=0,k=0;for(i=0;i<3;i++){k=0;for(j=0;j<7;j++){if(input[j]&&Matrix[i][j])k++;}if(k%2)check[i]=1;elsecheck[i]=0;}}intconvertmsg(char*a,int*b){inti=0;char*p=a;while(*p){b[i]=(*p)-48;i++;p++;}returni;}实验结果:运行程序检查其正确性,运行结果如下:[X)SBox0.72PCpuCycles:mai.Frameskip0rProgram:TCZ:\>pathC:\TC3G\BINZ:X>C:C:\>cd\TC30\EIMbxiotMiiriyiiPleaseinputthe4-bit-massaye:221G^rrorinput!MeasetryagainT11011Errnrin]pii+fP1easrptr'yarjctirf110GNoutheHamniingcodeis:0111100ThemassumetheerrorbitisNo.1AfterdecodingweknoutheerrorLitis091Pleaseinputthe4-bit-massage:1011NoutheHaMtiirgcodeis:011G01LThemassumetheerrorbitisNo.ZAfterdecodingweKnoutheerrorbitisfcJLQ此图给出了程序运行两次的结果。首先输入非法数据2210,程序报错;再输入5位不符合要求的数据,同样报错;再输入合法数据1100(例题中的数据),显示海明编码为0111100,正确;此时随机使第1位出错取反,则输出校验位为001,正确。第二次运行输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第三节“伏安法”测电阻说课稿2025学年初中物理沪科版九年级全一册-沪科版2012
- 小学语文绘本2025绘本故事表演说课稿
- 医用激光仪器项目可行性研究报告
- 初中2025分享关爱主题班会说课稿
- 稀土压延技术标准制定
- 2019年软件基础平台企业研发技术中心升级项目可行性研究报告
- 2026年纯音乐吉他教学评价设计
- 冯某省市市实验中学选修七第5模块阅读课
- 初中情绪日记2025说课稿
- 高中2025年感恩师生说课稿
- GB 30616-2020食品安全国家标准食品用香精
- GA 676-2007警用服饰刺绣软肩章
- 国际商务谈判课件(同名951)
- 《煤矿安全规程》专家解读(详细版)
- 2023年新教科版科学六年级下册学生活动手册答案
- 安全目标责任书(仓库管理员)
- 中枢神经系统淋巴瘤的诊断和治疗 课件
- 施工单位工作联系单模板
- 幼儿园大班安全:《危险的洞洞》 课件
- 抗生素PPT课件(共45张PPT)
- 2022年中考道德与法治专题复习课件:易错易混点
评论
0/150
提交评论