汉明码编码实验报告详细解释_第1页
汉明码编码实验报告详细解释_第2页
汉明码编码实验报告详细解释_第3页
汉明码编码实验报告详细解释_第4页
汉明码编码实验报告详细解释_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汉明码的实现详细实验报告一、实验目的1、掌握线性分组码的编码原理2、掌握汉明码编码方法3、了解编码对误码性能的改善二、实验内容1、自行设置汉明码的参数,生成矩阵,计算所设计出的汉明码;写出产生(3,1)汉明码的生成矩阵,给出生成码的源程序,并给出运行结果。2、利用encode库函数实现汉明编码;3、搭建一个通信仿真模块,并给出运行结果,分析汉明码对通信性能的影响;4、整理好所有的程序清单或设计模块,并作注释。三、实验原理(一)、汉明码的介绍汉明码是1951年由汉明(R.W.Hamming)提出的能纠正单个错误的线性分组码。它性能良好,既具有较高的可靠性,又具有较高的传输效率,而且编译码电路较为

2、简单,易于工程实现,因此汉明码在发现后不久,就得到了广泛的应用。我们的目的是要寻找一个能纠正单个错误,且信息传输率(即码率r=k/n)最大的线性分组码。我们已经知道,具有纠正单个错误能力的线性分组码的最小距离应为3,即要求其H矩阵中至少任意两列线性无关。要做到这一点,只要H矩阵满足“两无”一一无相同的列,无全零列就可以了。(n,k)线性分组码的H矩阵是一个(n-k)Mn=Mn阶矩阵,这里r=n-k是校验元的数目。显然,r个校验元能组成2r列互不相同的r重矢量,其中非全零矢量有2r一1个。如果用这2r一1个非全零矢量作为H矩阵的全部列,即令H矩阵的列数n=2,-1,则此H矩阵的各列均不相同,且无

3、全零列,由此可构造一个纠正单个错误的(n,k)线性分组码。同时,2r-1是n所能取的最大值,因为如果n>2r-1,那么H矩阵的n列中必会出现相同的两列,这样就不能满足对H矩阵的要求。而由于n=2,-1是n所能取的最大值,也就意味着码率R取得了最大值,即(3-18)r,r=1-n2-1这样设计出来的码是符合我们的要求的,这样的码就是汉明码。定义若H矩阵的列是由非全零且互不相同的所有二进制r重矢量组成,则由此得到的线性分组码,称为GF(2)上的(2-1,2r-1-r)汉明码。(二)、产生(3,1)汉明码的原理及程序代码本实验要求写出产生(3,1)汉明码的生成矩阵,由上述可知,我们的n=2r1

4、=3,而k=2r1r=1,由止匕可得出r=2.当r=2时,有3个非全零的二重矢量:(01),(10),(11)构成矩阵011H=IJ0L由此得到一个能纠正单个错的(3,1)汉明码。若码字传输中左边第一位出错,则相应的伴随式s=(01)就是H矩阵的第一列,也正好是“1的二进制表示。同理可知,无论哪一位出错,它对应的伴随式就是该位的二进制表示,故译码十分方便,特别适用于计算机内部运算和记忆系统中的纠错。如果要得到系统码形式的H矩阵,只需对上述矩阵进行初等变换交换列即可。110H=|J01相应地,生成矩阵G为G=111根据c=uG生成码字。由此构成的(3,1)汉明码如表3-1所示。表3-1(3,1)

5、系统码信息组码字00001111程序段代码为:%functionf=humm_enc(a);G=111;%(3,1)汉明码的生成矩阵t=input(输入0或1:');%t=0则产生(3,1)汉明码,t=1则对输入序列进行编码ift=1a=input('输入信息元序列:');c=mod(a*G,2);%编码的码字cdisp('编码后序列:');显本“编码后序列:字样disp(c);%显示编码的码字elsedisp('(3,1)汉明系统码为:');%显示“(3,1)汉明系统码为:”字样fori=0:1;%循环变量的取值为0,1a=dec2bi

6、n(i,1);%系统自动给出两信息元从0到1c=mod(a*G,2);%输出编码的码字disp(a);%显示系统自动给出两信息元从0至Mdisp('对应码字为:');%显示“对应码字为:”字样disp(c);%显示编出的码字end%结束for循环end%结束整个程序(三)、利用encode库函数实现汉明编码程序为msg=randint(1,40);%生成一行40列的信息序列code=encode(msg,7,4,'hamming');%进行汉明编码(四)、搭建通信仿真模块图形四、实验步骤按照实验原理中所述进行相应的实验操作即:1、求(3,1)码的生成矩阵;2、进

7、行代码输入;3、进行仿真;4、记录实验结果。五、实验记录及分析1、(3,1)码的生成矩阵的求解过程已在实验原理中详细作解2、代码运行结果为(1)、输入1且信息元系列为1时输入0或1:1输入信息元序列:0编码后序列:000(2)、输入1且信息元系列为0时输入0或1:1输入信息元序列:1编码后序列:111(3)、输入0时显示以下结果输入0或1:0(3,1)汉明系统码为:0对应码字为:0001对应码字为:1113、利用encode库函数实现汉明编码程序为:msg=Columns1through1101000Columns12through22110001Columns23through331001C

8、olumns34through400000104、进行仿真结果;参数设置SourceBlockParameters:BernoulliBinaryGe.Togenerateavectoroutput,specifytheprobabilityasavector.ParanetersProbabilityofazero:O.1Initialseed:61Sanpletime:1yIFrazae-tasedoutputsSanpiesperframe:4OutputdatatypeidoubleHelp二E*nn±ikrXCreate-a睦HiWnfe&de中士士良:生之官且岑自

9、wgthR&idc*dT:rdlengthK.3.uEthavethefora2乂whtieYi&aninteser£jreit*rthanoraiialt&33'jsttaualX1LTheinputauBtcontainexactlyKeleaents,IfitisfTBznebasedthenitwstbeacoIlmvector.AppIf在主框中输入simout运行后为:simout=0000.33331.00003.00000.14291.00007.0000六、实验思考1、分析汉明码对通信性能及其作用的影响;答:当计算机存储或移动数据时,

10、可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错。在数据链路中存在大量噪音时,前向纠错可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。2、哪些参数可能对汉明仿真编码进行影响答:BernoulliBinaryGenerator中的0出现的概率(prababiHtyofazero),还有Intialseed、sampletime,ErrorRateCalculation中的Receivedelay和compu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论