汉明码编译码

合集下载

汉明码编译码课程设计

汉明码编译码课程设计

汉明码编译码课程设计一、课程目标知识目标:1. 学生能理解汉明码的基本概念,掌握编码和译码的原理;2. 学生能够运用汉明码进行信息编码和错误检测与纠正;3. 学生了解汉明码在通信和计算机科学中的应用,理解其重要性。

技能目标:1. 学生能够运用所学知识,独立完成汉明码的编码和译码过程;2. 学生能够通过实际案例分析,提高问题解决和逻辑思维能力;3. 学生能够运用合作学习的方式,进行小组讨论和成果分享。

情感态度价值观目标:1. 学生培养对信息科学的兴趣,激发学习热情;2. 学生认识到团队合作的重要性,培养协作精神;3. 学生通过学习汉明码,认识到科技对社会发展的贡献,增强社会责任感。

课程性质:本课程属于信息技术学科,以实际应用为导向,注重理论与实践相结合。

学生特点:六年级学生具备一定的信息科学基础和逻辑思维能力,对新鲜事物充满好奇心,但注意力集中时间有限。

教学要求:结合学生特点,教师应采用生动形象的教学方法,注重启发式教学,引导学生主动参与,提高课堂互动性。

同时,将课程目标分解为具体的学习成果,以便在教学过程中进行有效评估。

1. 汉明码基本概念:介绍汉明码的定义、原理及其在通信和计算机科学中的应用。

教材章节:第三章第三节2. 汉明码编码过程:讲解如何利用汉明码进行信息编码,包括奇偶校验位的添加方法。

教材章节:第三章第四节3. 汉明码译码过程:介绍汉明码的译码原理,以及如何检测和纠正错误。

教材章节:第三章第五节4. 案例分析与实操:通过实际案例,分析汉明码在信息传输中的应用,并进行编码和译码实操。

教材章节:第三章第六节5. 小组合作与讨论:分组进行讨论,分享学习心得,培养学生的团队合作精神。

教材章节:第三章实践活动教学安排与进度:第一课时:汉明码基本概念及编码过程第二课时:汉明码译码过程及案例分析第三课时:实操练习,小组合作与讨论第四课时:总结与评价,巩固所学知识教学内容确保科学性和系统性,结合课程目标进行详细的教学大纲制定,以便教师有序开展教学活动,帮助学生更好地掌握汉明码相关知识。

汉明码编译码文档

汉明码编译码文档

第一章 绪论1.1差错控制编码差错控制编码 1.1 1.1 概述概述数字信号在传输过程中,数字信号在传输过程中,由于受到干扰的影响,由于受到干扰的影响,码元波形将变坏。

码元波形将变坏。

接收端收接收端收到后可能发生错误判决。

到后可能发生错误判决。

由于乘性干扰引起的码间串扰,由于乘性干扰引起的码间串扰,可以采用均衡的办法来可以采用均衡的办法来纠正。

纠正。

而加性干扰的影响则需要用其他办法解决。

而加性干扰的影响则需要用其他办法解决。

在设计数字通信系统时,在设计数字通信系统时,应该应该首先从合理选择调制制度,首先从合理选择调制制度,解调方法以及发送功率等方面考虑,解调方法以及发送功率等方面考虑,使加性干扰不足使加性干扰不足以影响到误码率要求。

在仍不能满足要求时,就要考虑采用差错控制措施了。

从差错控制角度看,按加性干扰引起的错码分布规律不同,信道可以分为3类,即随机信道,突发信道和混合信道。

在随机信道中,错码的出现是随机的,而且错码之间是统计独立的。

而且错码之间是统计独立的。

在突发信道中,在突发信道中,错码是成串集中出现的,错码是成串集中出现的,而且在短而且在短促的时间段之间存在较长的无错码区间。

把既存在随机错码又存在突发错码的的信道称为混合信道。

对于不同类型的信道,应该采用不同的差错控制技术。

1.2 1.2 纠错编码原理纠错编码原理我们把信息码分组,为每组信息码附加若干监督码的编码称为分组码为每组信息码附加若干监督码的编码称为分组码(block (block code).code).在分组码中,在分组码中,监督码元仅监督本码组中的信息码元。

分组码一般用符号(n ,k )表示,其中n 是码组的总位数,又称为码组的长度(码长),k 是码组中信息码元的数目,码元的数目,n-k=r n-k=r 为码组中的监督码元的数目,或者称为监督位数目,分组码的结构如图2示,图中前k 位为信息位,后面附加r 个监督位。

其中a n-1到a r 为k 个信息位,个信息位,a a r-1到a 0为r 个监督位。

汉明码编译码实验

汉明码编译码实验

汉明码编译码实验一、实验目的1.掌握汉明码2的编解码原理。

掌握汉明码的纠错和检测原理二、实验内容1.汉明码编码实验。

2.汉明码译码实验。

3、汉明码纠错检错能力验证实验。

三、实验设备lte-tx-02e通信原理综合实验系统----------------------------------------------模块8四、实验原理在随机信道中,错码的出现是随机的,且错码之间是统计独立的。

例如,由高斯白噪声引起的错码就具有这种性质。

因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。

由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。

为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。

这些监督码元和信码之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。

在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。

不同的编码方法有不同的检错或纠错能力。

有的编码就只能检错不能纠错。

那么,为了纠正一个错位码,至少应该向块码中添加多少监督位?编码效率可以提高吗?基于这一思想的研究催生了汉明码。

汉明码是一种线性分组码,它能纠正位错码,编码效率高。

接下来,我们介绍了汉明码的构造原理。

一般说来,若码长为n,信息位数为k,则监督位数r=n?k。

如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求2r?1.≥ n或2R≥ K+R+1下面我们通过一个例子来说明如何具体构造这些监督关系式。

在分组码(n,k)中设k=4。

为了纠正错位代码,从公式(14-1)中可以看出,监管数字R需要≥ 3.如果r=3,那么n=K+r=7。

我们用α6α5?α0代表这七个符号,S1、S2和S3代表三种监督关系中的校正器。

然后可以指定s1s2s3的值与错误代码位置之间的对应关系,如表14-1所示。

表14-1(14-1)s1s2s3001010100011错码位置αααα0123s1s2s3101110111000错码位置α4α5α6无错由表中规定可见,仅当一错码位置在α2、α4、α5或α6时,校正子s1为1;否则s1为0。

汉明码的编码和译码算法

汉明码的编码和译码算法

汉明码(Hamming)的编码和译码算法本文所讨论的汉明码是一种性能良好的码,它是在纠错编码的实践中较早发现的一类具有纠单个错误能力的纠错码,在通信和计算机工程中都有应用。

例如:在“计算机组成原理”课程中,我们知道当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错。

简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。

如果对汉明码作进一步推广,就得出了能纠正多个错误的纠错码,其中最典型的是BCH码,而且汉明码是只纠1bit错误的BCH码,可将它们都归纳到循环码中。

各种码之间的大致关系显示如下。

一、汉明码的编码算法输入:信源消息u(消息分组u)输出:码字v处理:信源输出为一系列二进制数字0和1。

在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks)。

每个消息分组记为u,由k个信息位组成。

因此共有2k种不同的消息。

编码器按照一定的规则将输入的消息u转换为二进制n 维向量v ,这里n >k 。

此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。

因此,对应于2k 种不同的消息,也有2k 种码字。

这2k 个码字的集合就叫一个分组码(block code )。

若一个分组码可用,2k 个码字必须各不相同。

因此,消息u 和码字v 存在一一对应关系。

由于n 符号输出码字只取决于对应的k 比特输入消息,即每个消息是独立编码的,从而编码器是无记忆的,且可用组合逻辑电路来实现。

定义:一个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF(2)上所有n 维向量组成的向量空间的一个K 维子空间时被称为线性(linear )(n, k)码。

汉明码(n ,k ,d )就是线性分组(n, k)码的一种。

其编码算法即为使用生成矩阵G :v = u ·G 。

汉明码编译码

汉明码编译码

汉明码编译码汉明码编译码一设计思想汉明码是一种常用的纠错码,具有纠一位错误的能力。

本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。

用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。

用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。

此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。

二实现流程1.汉明码编译码生成矩阵G信息序列M产生码字C信道计算伴随式S接收码流R校验矩阵H解码码流C2解码信息序列M2图 1 汉明码编译码框图1)根据生成多项式,产生指定的生成矩阵G2)产生随机的信息序列M3)由C MG得到码字4)进入信道传输5) 计算=TS RH 得到伴随式 6) 得到解码码流7) 得到解码信息序列2. 汉明码误码性能分析误码率(SER )是指传输前后错误比特数占全部比特数的比值。

误帧率(FER )是指传输前后错误码字数占全部码字数的比值。

通过按位比较、按帧比较可以实现误码率和误帧率的统计。

3. 构建完整通信系统图 2 完整通信系统框图 输入信息序列Huffman 编码Hamming 编码信道Hamming 译码Huffman 译码输出信息序列噪声三 结论分析1. 汉明码编译码编写了GUI 界面方便呈现过程和结果。

图 3 汉明码编译码演示GUI 界面以产生(7,4)汉明码为例说明过程的具体实现。

1) 根据生成多项式,产生指定的生成矩阵G 用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k100101101011100010111H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 1101000011010011100101010001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦2) 产生随机的信息序列M0010=01000111M ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3) 由C MG =得到码字010001101101000010111C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦4) 进入信道传输假设是BSC 信道,错误转移概率设定为0.1 传输后接收端得到的码流为000011110100000111101R ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦红色表示错误比特。

(7,4)汉明码编译码程序说明讲诉

(7,4)汉明码编译码程序说明讲诉

(7,4)汉明码编译码原理程序说明书1、线性分组码假设信源输出为一系列二进制数字0和1.在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks )。

每个消息分组记为u ,由k 个信息位组成。

因此共有2k种不同的消息。

编码器按照一定的规则将输入的消息u 转换为二进制n 维向量v ,这里n>k 。

此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。

因此,对应于2k种不同的消息,也有2k种码字。

这2k个码字的集合就叫一个分组码(block code )。

一个长度为n ,有2k个码字的分组码,当且仅当其2k个码字构成域GF (2)上所有n维向量空间的一个k 维子空间时被称为线性(linear )(n ,k )码。

对于线性分组码,希望它具有相应的系统结构(systematic structure ),其码字可分为消息部分和冗余校验部分两个部分。

消息部分由k 个未经改变的原始信息位构成,冗余校验部分则是n-k 个奇偶校验位(parity-check )位,这些位是信息位的线性和(linear sums )。

具有这样的结构的线性分组码被称为线性系统分组码(linear systematic block code )。

本实验以(7,4)汉明码的编译码来具体说明线性系统分组码的特性。

其主要参数如下:码长:21mn =- 信息位:21m k m =-- 校验位:m n k =-,且3m ≥ 最小距离:min 03d d ==由于一个(n ,k )的线性码C 是所有二进制n 维向量组成的向量空间n V 的一个k 维子空间,则可以找到k 个线性独立的码字,0,1,1k g g g -…… ,使得C 中的每个码字v 都是这k 个码字的一种线性组合。

(7,4)汉明码的生成矩阵如下,前三位为冗余校验部分,后四位为消息部分。

0123 1 1 0 1 0 0 00 1 1 0 1 0 01 1 1 0 0 1 01 0 1 0 0 0 1g g G g g ⎧⎫⎧⎫⎪⎪⎪⎪⎪⎪⎪⎪==⎨⎬⎨⎬⎪⎪⎪⎪⎪⎪⎪⎪⎩⎭⎩⎭如果()0123u u u u u =是待编码的消息序列,则相应的码字可如下给出:()0101230011223323g g v u G u u u u u g u g u g u g g g ⎧⎫⎪⎪⎪⎪===+++⎨⎬⎪⎪⎪⎪⎩⎭编码结构即码字()0123456v v v v v v v v =,对于(7,4)线性分组码汉明码而言,3456,,,v v v v 为所提供的消息序列,而0356v v v v =⊕⊕,1345v v v v =⊕⊕,2456v v v v =⊕⊕。

实验五 汉明码的编译码

实验五 汉明码的编译码

《数据通信原理》实验报告实验题目:汉明码的编译码专业班级:信息工程2班姓名学号:赵星敏201342351 李明阳201342300指导教师:刘钰实验五 汉明码的编译码一、实验目的1、理解汉明码的编码原理2、掌握利用simulink 进行汉明码编译码仿真的方法3、掌握利用matlab 指令进行汉明码编译码的方法 二、实验原理在数字通信系统中,为了实现信息的可靠传输,需要采用差错控制来发现并纠正错误。

进行差错控制的方法就是对信息进行差错控制编码,差错控制编码种类较多,其中线性分组码是常用的一类编码,具有编码效率高,实现较简单以及检纠错能力较强等特点。

一般数字通信系统模型由信源信宿、加解密、编解码、调制解调等模块组成,其中有些通信模块是组成整个通信系统所必不可少的,有些模块是可以不需要的。

差错控制编解码属于编解码器通信模块,为了方便分析差错控制编码性能,通过将通信系统简化为如图5-1所示的信息传输系统来搭建仿真实验平台进行分析研究。

图5-1编码,有时也称为纠错编码。

不同的编码方法,有不同的检错或纠错能力,有的编码只能检错,不能纠错。

一般说来,付出的代价越大,检纠错的能力就越强。

在选择差错控制编码时需要考虑到编码效率、检纠错的能力等方面因素的影响。

按照是否将信息码元进行分组可以将差错控制编码分为分组码和非分组码,线性码是指信息位和监督位满足一组线性方程的码,任一(n,k)线性分组码的编码效率为k/n 。

Simulink 通信模块中提供了二进制线性分组码编解码器:Binary Linear Encoder 和Binary Linear Decoder 。

汉明码是汉明(Hamming)于1950年提出的能纠正一位错码且编码效率较高的线性分组码,它可以用一种简洁有效的方法进行解码。

汉明码不是仅指某一种码,而是指一类码。

二进制汉明码应满足条件:2n-k =1+n,令m=n-k,汉明码n 和k 服从关系式:码长n=2m -1;信息位k=2m -1-m ;最小距离dmin=3(指汉明距离)。

汉明码编译码及纠错性能验证

汉明码编译码及纠错性能验证

汉明码编译码及纠错性能验证目录一、实验目的 (2)二、实验原理 (2)1.汉明编译码介绍 (2)2.汉明编译码原理 (2)3.举例说明 (3)4.实验框图说明 (3)5.框图中各个测量点说明 (4)三、实验任务 (5)四、实验步骤 (5)1. 实验准备 (5)2.汉明码编码原理验证 (5)3.汉明译码观测及纠错能力验证 (8)4.实验结束 (10)五、实验分析 (11)一、实验目的1.学习汉明码编译码的基本概念;2.掌握汉明码的编译码方法;3.验证汉明码的纠错能力。

二、实验原理1.汉明编译码介绍汉明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。

汉明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是 1 就变成 0,原来是 0 就变成 1)来将其纠正。

2.汉明编译码原理●汉明码编码采用(4,7)汉明码,信息位数k=4,监督位数r=n-k=3,可以纠一位错码,生成矩阵G=[1 0 0 0 1 1 10 1 0 0 1 1 00 0 1 0 1 0 10 0 0 1 0 1 1],编码情况见表格1。

表格1 (7,4)Hamming编码表●汉明码译码计算校正子S=[S1,S2,S3],其中S1=a6⨁a5⨁a4⨁a2S2=a6⨁a5⨁a3⨁a1S3=a6⨁a4⨁a3⨁a0校正子S 的值决定了接收码元中是否有错码,并且指出错码的位置,见表格 2。

表格 2 错码位置示意3.举例说明信息位a6a5a4a3=1001,根据表格 1(4,7) Hamming 编码表,编码为1001100,如果在信道传输的过程中产生一位误码,编码接收时变为1101100 ,我们计算校正子:S1=a6⨁a5⨁a4⨁a2=1S2=a6⨁a5⨁a3⨁a1=1S3=a6⨁a4⨁a3⨁a0=0校正子S=110,查找表格 2 错码位置示意,a5产生误码,则译码输出信息位1001。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汉明码编译码汉明码编译码一设计思想汉明码是一种常用的纠错码,具有纠一位错误的能力。

本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。

用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。

用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。

此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。

二实现流程1.汉明码编译码生成矩阵G信息序列M产生码字C信道计算伴随式S接收码流R校验矩阵H解码码流C2解码信息序列M2图 1 汉明码编译码框图1)根据生成多项式,产生指定的生成矩阵G2)产生随机的信息序列M3)由C MG得到码字4)进入信道传输三 结论分析1. 汉明码编译码编写了GUI 界面方便呈现过程和结果。

图 2 汉明码编译码演示GUI 界面以产生(7,4)汉明码为例说明过程的具体实现。

1) 根据生成多项式,产生指定的生成矩阵G 用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k100101101011100010111H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 1101000011010011100101010001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦2) 产生随机的信息序列M0010=01000111M ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3) 由C MG =得到码字010001101101000010111C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦4) 进入信道传输假设是BSC 信道,错误转移概率设定为0.1 传输后接收端得到的码流为000011110100000111101R ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦红色表示错误比特。

5) 计算=TS RH 得到伴随式 011=100001S ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦错误图样 0000001 0000010 0000100 0001000 0010000 0100000 1000000 伴随式 101 111 011 110 001 010 100查表可知第一行码字错误图样为0100000,第二行码字错误图样为1000000,第三行码字错误图样为0000001。

进行ˆˆ=+CR E 即可得到纠错解码的码字C2。

6) 得到解码码流0110100200000001110010C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦7) 得到解码信息序列0100200000010M ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦可以看出解码信息序列与原信息序列一样,体现了汉明码的纠错能力。

2.性能分析1)BSC 信道仿真设置BSC 错误转移概率Pe 从0到1变化,步进为0.01,在每个Pe 值进行1000次蒙特卡洛仿真,得到图3所示误码率随Pe 变化曲线图和图4所示误帧率随Pe 变化曲线图。

图 5误码率随Pe 变化曲线图图中绿线为BSC 信道误码率,红线为设定Pe 值,蓝线为Hamming 码解码误码率。

由图线可以看出仿真的BSC 信道误码率与Pe 一致。

在Pe<0.2时,Hamming码的解码误码率随着BSC信道错误传输概率Pe的减小而减小。

Hamming码的解码误码率显著下降,约为Pe的1/2。

Hamming码的纠1位错起到了很好的效果。

0.2<Pe<0.5时,Hamming码的解码误码率大于Pe。

这是因为在Pe>0.2时,传一个码字错误比特数近似为2,而Hamming码只能纠一位错,两位同时出错时会纠成另一个码字,这样就可能增加误比特数,使得“越纠越错”。

Pe>0.5时,情况恰好相反。

图6误帧率随Pe变化曲线图可以看出随着Pe增加,BSC传输误帧率和Hamming译码误帧率成S曲线上升达到1。

Hamming译码误帧率要低于BSC传输误帧率,体现了其纠错能力使得码字错误减少这一效果。

与误码率的图对比可以发现,误帧率要比误比特率高。

为了进一步验证结果的正确性,进行了simulink仿真。

图7 BSC信道仿真框图用伯努利二进制发生器产生随机序列,进行汉明码编码,进入BSC信道传输,之后进行汉明码译码,用Error Rate Calculation 模块统计误码率,结果如下:图8 simulink仿真BER随Pe变化曲线图与程序实现仿真的结果几乎一样。

2)AWGN信道仿真AWGN信道仿真直接用simulink实现。

图9 AWGN信道仿真框图设置系统的数字调制方式为2FSK,设定AWGN信道的SNR从0到8dB以1dB步进变化,得到误码率统计图。

图10 simulink仿真BER随SNR变化曲线图图中绿线为2FSK调制误码率,是由于AWGN带来的。

蓝线为汉明码解码后误码率。

可以看出,汉明码能够很好的降低误码率。

在SNR达到5dB时错误概率降低为0.001.3.完整通信系统的构建以传输图片为例,信道设置为BSC信道。

在不加入汉明码和加入汉明码两种情况下观察传输后图像的情况。

结果如下表所示。

BSC错误0.1 0.05 0.01 0.001 0转移概率PeBSC传输图像加汉明码0.0652 0.02 0.0006 0 0误码率加汉明码传输图像由结果可以看出,加入信道编码后,当BSC错误转移概率Pe<0.01后,图像恢复性能有明显的改善。

这体现了汉明码虽然只有纠一位错的能力,但由于一般信道的Pe 不会很大,其纠错的实用性和效果还是很好的。

四 思考题解答1.采用循环Hamming 码在硬件实现中的优点?与普通的线性分组码译码电路相比,循环汉明码不需要存储伴随式及错误图样,显著的节省了寄存器的使用,起到简化电路的作用。

2.Hamming 码如何改进可提高纠检错性能?可以在H 校验矩阵基础上进行扩展,最后一行为全1行,最后一列矢量为[00…1]T 。

这样任何3列是线性无关的,d min =4,进行奇偶校验,纠错能力为1,检错能力为2。

即下面通过实例的方式说明扩展H 校验矩阵的检错性能。

首先在(7,4)汉明码的基础上进行扩展,得到(8,4)扩展汉明码的生成矩阵H 。

1110100001110100=1101001011111111H ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦简化译码表如下:错误图样 0000 00010000 0010 0000 0100 0000 1000 0001 0000 0010 0000 0100 0000 10000000 伴随式00010011010110010111110111111011错码个数原序列 错码序列 伴随式 查表结果1 0000 0000 0000 0101 0100 有2 1110 1000 1110 1010 0011 无3 0001 0111 0010 0101 1001 有 40100 11101100 00100111有0'=0111H H ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦M L说明对于错码个数为1的,既可以检错也可以纠错;错码个数为2的,可以检错,但不能纠错;错码个数大于2的,被认为是错码个数为1,纠成其他码字。

附录clear all[H,G,n,k] = hammgen(3,'D^3+D+1');%%[H,G,n,k] = hammgen(3,'D^4+D^2+D+1');%[H,G,n,k] = hammgen(4,'D^4+D+1');%%[H,G,n,k] = hammgen(5,'D^5+D^2+1');%%%产生校验矩阵E=[zeros(1,n);fliplr(eye(n,n))];%产生错误图样一共是n+1个S=mod(H*E',2);%生成错误图样的伴随式%%产生消息序列%二进制随机矩阵%M= randi([0,1],1,k);%产生4位消息列nm=3;M= randi([0,1],nm,k);%产生4位消息列%消息序列code=mod(M*G,2);%对消息序列编码%BSC信道进入Pe=0.1;for j=1:nmfor i=1:ncode_bsc(j,i)=mod(code(j,i)+(unidrnd(round(1/Pe))==1),2);%模2加得到传输后的编码delta(j,i)=code_bsc(j,i)-code(j,i);%作差来计算错误位置endendep=find(delta~=0);%error positiondisplay(length(ep),'BSC错误位数')display(length(ep)/(nm*n),'BSC误比特率');Scode=mod(code_bsc*H',2 )'; %Scode=[1 1 0]';errow2=0;for i=1:nmif sum(code_bsc(i,:)-code(i,:))~=0errow2=errow2+1;endenddisplay(errow2,'BSC错误码字数');% display(errow2/nm,'BSC误码率');for m=1:nmfor i=1:n+1if S(:,i)==Scode(:,m)j=i;endend %找到对应的伴随式的位置dcode(m,:)=mod(code_bsc(m,:)+E(j,:),2);ender=length(find(dcode-code~=0));%计算误比特的个数enta=er/(nm*n);display(code,'信息序列码字')display(code_bsc,'BSC传输后的信息序列码字') display(dcode,'解码后的信息序列')% display(errow2/nm,'解码后误码率');% display(er,'解码后错误比特数');m2=dcode(:,n-k+1:end);display(dcode,'解码后信息序列');errow2=0;for i=1:nmif sum(dcode(i,:)-code(i,:))~=0errow2=errow2+1;endend% display(errow2,'解码后错误码字数');% display(errow2/nm,'解码后误码率');。

相关文档
最新文档