基于MATLAB的(7_4)汉明码编译码设计与仿真结果分析
二元(7,4)汉明码的编译码分析与实验研究

设计(论文)题目:二元(7,4)汉明码的编译码分析与实验研究摘要汉明码(Hamming Code)在电信领域内属于线性分组码,或者可以称为线性调试码。
它是以发明者理查德·卫斯里·汉明的名字命名的。
汉明码在传输信息序列时插入校验码,当计算机存储或传输数据时,或者在信道传输的过程中,可能会产生误码,即信息错位,以检测并纠正一个比特错误。
由于汉明编码简单,它们被广泛应用于实际传输中。
本文主要涉及二元(7,4)汉明码的编码、译码及实现,以及信息论与编码的相关知识。
对于二元(7,4)汉明码C,其校验矩阵为H,汉明距离d(C)=3的充要条件是校验矩阵H的任意2个列矢量线性无关,且任意3个列向量是线性相关。
监督矩阵H生成的码是(7,4,3)码。
所以接下来问题是构建监督矩阵H和生成矩阵G,找出编码器和译码器输入和输出对应的逻辑关系,画出汉明码的编码电路图和译码电路图,通过VHDL语言实现汉明码的编码过程和译码过程,观察仿真波形,来观察实验结果。
关键字:二元(7,4)汉明码;生成矩阵;监督矩阵;编码;译码;AbstractHamming code field belongs to the linear block codes in the telecommunications, or you could be called linear debugging code. It is the inventor, Richard Wesley Hamming named after. Hamming code inserted into the check code in information transmission sequence, when the computer refers for data storage,or in the process of channel transmission. it may produce error, namely the informational burst-error, and Hamming Code could detect and correct errors one bit. Due to its simple hamming coding, they are widely used in the actual transmission.This paper mainly relates to binary (7, 4) hamming code about coding, decoding and realization, as well as the related knowledge of Information Theory and Coding. For binary (7, 4) hamming code called C, its supervision matrix of the H, hamming distance d (C) = 3 of any two of the sufficient and necessary condition is checking matrix H column vector linearly independent, and arbitrary three column vector is linearly dependent. Supervision of matrix H generated code is (7, 3) code. So the next problem is to build the generator matrix G and supervision matrix H, generate the encoder and decoder ,inputs and outputs corresponding logical relationship, as well as,draw the circuit diagram of hamming code encoding and decoding circuit diagram, using VHDL language realization of hamming code encoding and decoding process, observing the simulation waveform and the result of the experiment.Keywords:binary (7, 4) hamming code ;generator matrix;supervision matrix;encoding ;decoding ;引言汉明码是最早提出来的用于纠错的编码,它是一类可以纠正一位错误的高效的线性分组码。
基于matlab的(7.4)汉明码编译码仿真.

综合课程设计
基于matlab的(7,4汉明码编译仿真
专业名称通信工程
班级学号4090719
学生姓名何云瑞
指导教师李雅珍
设计时间2011.12.19~2012.1.4
课程设计任务书
专业:通信工程学号:409719学生姓名(签名:
设计题目:(7,4汉明码的编码、译码仿真
一、设计实验条件
⎢⎥⎢⎥
⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
⎢⎥⎢⎥⎢⎥⎣⎦ (7
式(6还可以简记为
0T T H A ∙=或0T
A H ∙= (8
其中
111010011010101011001H ⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦ []654321
0A a a a a a a a =
[]00
0=
111011011011P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦
3.2.3仿真波形(10
3.2.4仿真结果分析(14
4.总结(15
参考文献(16
摘要
汉明码(Hamming Code是一种能够自动检测并纠正一位错码的线性纠错码,即SEC (Single Error Correcting码,用于信道编码与译码中,提高通信系统抗干扰的能力。
本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。在此基础上,对汉明码的性能进行分析,得出结论。
③hammgen函数
功能:汉明码生成矩阵和校验矩阵产生函数
语法:H=hammgen(M
[H,G]=hammgen(M
[H,G,N,K]=hammgen(M
74汉明码编码译码函数matlab

74汉明码编码译码函数matlab73汉明码简介73汉明码(Hamming Code),是由理查德·哈明(Richard W. Hamming)于1950年提出的一种能够纠错的编码方式。
在数据的通信和储存中,由于比特位(Bit)的传输或存储可能出错,使用汉明码可以检测和纠正错误,保证数据的可靠性。
而且,它具有编码效率高、纠错能力强等优越性。
74汉明码编码原理74汉明码是由7个数据位加上3个校验位组成的码。
通过在7个数据位中插入3个校验位,使得每个校验位都对特定的数据位进行检验,并在校验位位上调整,使其满足校验规则。
74汉明码编码规则如下:1. 将数据位插入到编码位中:将数据位a1、a2、a3、a4、a5、a6、a7插入到编码位b1、b2、b3、c1、c2、c3、c4中,并按照如下公式进行计算:b1 = a1b2 = a2b3 = a3c1 = a4c2 = a5c3 = a6c4 = a72. 计算每个校验位的值:每个校验位都要对特定的数据位进行检验,并在校验位位上调整,使其满足校验规则。
校验位p1:检验b1、 b2、 c1 是否为1的个数是否为奇数。
校验位p2:检验b1、 b3、 c2 是否为1的个数是否为奇数。
校验位p3:检验b2、 b3、 c3 是否为1的个数是否为奇数。
3. 将所有编码位合并得到74汉明码:将校验位及数据位组成新的编码位,形成74汉明码。
74汉明码译码原理74汉明码译码的规则如下:1. 监测码:检测接受到的数据中是否存在错误。
利用4个校验位检测数据中的错误。
校验位p1:检验b1、 b2、 c1 是否为1的个数是否为奇数。
校验位p2:检验b1、 b3、 c2 是否为1的个数是否为奇数。
校验位p3:检验b2、 b3、 c3 是否为1的个数是否为奇数。
校验位p4:检验数据位a1、 a2、 a3、 a4、 a5、 a6、 a7以及校验位p1、 p2、 p3是否为1的个数是否为奇数。
(完整版)(7,4)汉明码信道编码_共10页

111
1
0001 011
9
1001
100
2
0010 101
10
1010
010
3
0011
110
11
1011
001
3
通信系统课程设计报告
4
0100
110
12
1100
5
0101
101
13
1101
6
0110
011
14
1110
7
0111
000
15
1111
001 010 100 111
不难看出,上述(7,4)码的最小码距 d0=3,它能纠1个错或检2个错。汉明码是能 够纠正单个错误的线性分组码,其特点是:最小码距 d0=3,码长 n 与监督位满足 n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。
E=B-A
(4.4.1)
令 S = BHT,称为伴随式或校正子。
S = B H t =(A + E) H t = E H t
(4.4.2)
上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。
表2-2(7,4)汉明码 S 与 E 的对应关系
E
S
序
错误
e6 e5 e4 e3 e2 e1
基于MATLAB——汉明码设计与实现

实验报告书------汉明码设计与实现汉明码编译码器系统班级: 姓名: 学号:一.实验原理描述1.1汉明码编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。
若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++(1)下面以(7,4)汉明码为例说明原理:设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。
若取r=3,则n=k+r=7。
我们用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。
表1 校正子和错码位置的关系则由表1可得监督关系式:S 1=S 6⊕S 5⊕S 4⊕S 2 (2)S 2=S 6⊕S 5⊕S 3⊕S 1(3)S 3=S 6⊕S 4⊕S 3⊕S 0(4) 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。
监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中1s、2s、3s的值为0(表示编成的码组中应无错码){S6⊕S5⊕S4⊕S2=0S6⊕S5⊕S3⊕S1=0S6⊕S4⊕S3⊕S0=0(5)式(5)经过移项运算,接触监督位{S2=S6⊕S5⊕S4S1=S6⊕S5⊕S3S0=S6⊕S4⊕S3(6)式(5)其等价形式为:[111010011010101011001][S6S5S4S3S2S1S0]=[](7)式(6)还可以简记为H∙S S=0S或A∙S S=0 (8)其中H=[111010011010101011001]A=[S6S5S4S3S2S1S0] P=[111011011011]S S=[100010001]0=[000]所以有H=[P S S] (9)式(6)等价于[S 2S 1S S ]=[S 6 S 5 S 4 S 3][1 1 11 1 01 0 10 1 1]=[S 6 S 5 S 4S 3]S (10)其中Q 为P 的转置,即T Q P (11)式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。
基于simulink的(7,4)汉明吗的编码与译码讲解

引言在实际信道中传输数字信号时,由于信道特性不理想及加性噪声的影响,接收端所收到的数字信号不可避免的的会产生错码,影响通信质量。
为了使数字通信系统达到一定的误比特率指标,首先应合理设计基带信号,选择合适的调制方式、解调方式,采用均衡,提高发信功率等,但如果误比特率指标仍不能满足要求,则必须采用信道编码。
信道编码也称差错控制编码或纠错编码,它是提高数字通信系统可靠的重要方法。
1948年,香农在他的开创性论文《通信的数学理论》中首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错编码的基石。
如今的纠错编码已有几十年的历史,从早期的线性分组码,BCH码,到后来的RS码、卷积码,级联码、Turbo码;从原来的代数译码,到后来的门限译码、软判决译码,到Viterbi译码等;从注重数学模型、理论研究,到注重纠错编码的使用化问题,并且通过计算机仿真、搜索好码。
无论是从编码方法、译码方法还有研究方法上,纠错编码研究都取得了长足的发展,并广泛应用于各种通信系统。
如今,纠错编码技术已开始渗透带很多领域,如移动通信中大量利用纠错编码,计算机通信系统中也大量应用纠错编码。
汉明码是1950年由Hamming首先构造的,他是一个能够纠正单个错误的线性分组码,即SEC(Sing Error Correcting)码,它不仅性能好,而且编译电路非常简单,易于实现。
从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。
最先用于磁芯存储器,60年代初用于大型计算机,70年代在MOS存储器得到应用,后来在中小型计算机中普遍采用,目前常用在RFID系统中多位错误的纠正。
汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件,原编码我们可将它称为信息码,附加码称为校验码(又可称为监督码或冗余码)。
汉明码的最小码间距为3,所以只能够检测到2个错误或纠正1个错误,编码效率最高。
它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。
matlab(74)汉明码和(74)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。
2、实验原理线性分组码的构造方法比较简单、理论较为成熟,应用比较广泛。
汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码分别进行介绍:(1)编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。
若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。
若取r=3,则n=k+r=7。
这样就构成了(7,4)码。
用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。
表2.1 校正子和错码位置的关系则由表1可得监督关系式:16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕()3 36430s a a a a =⊕⊕⊕()4 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。
监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,为使所编的码中无错码,则123,,S S S 等于0,即65426531643000(5)0a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩方程组(5)可等效成如下矩阵形式6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(6)式(6)可简化为0T T HA =,H 为监督矩阵,则由式(6)可得到监督矩阵11101001101010=[P I ] (7)1011001r H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦因为生成矩阵'=[I Q]=[I ]k k G P ,所以由(7)得生成矩阵G 如下:[]k 10001110100110[']00101010001011k G I Q I P ⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎣⎦然后利用信息位和生成矩阵G 相乘产生整个码组,即有[][]65432106543=(8)A a a a a a a a a a a a G=其中A 为整个码组矩阵,6543a a a a 是信息位。
单片机实现(7,4)汉明码的编码毕业设计

单片机实现(7,4)汉明码的编码摘要在当今和未来的信息化社会中,数字通信已成为信息传输的重要手段,全球数字化已成为当今世界的主要潮流。
但是,数字信号在传输过程中,加性噪声,码间串扰等都会产生误码,因此需要用信道编码来降低误码率,提高数字通信的可靠性。
随着差错控制编码技术的蓬勃发展,作为信道传输过程抗干扰的有效手段,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等领域。
其中汉明码是一种能够纠正一位错误且编码效率较高的线性分组码。
由于它的编译码在工程上较易实现,所以应用广泛。
与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。
利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。
在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。
通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。
但这种方法比简单重传协议的成本要高。
汉明码利用奇偶块机制降低了前向纠错的成本。
软件实现下面给出基于最常用的MCS-51单片机汇编语言的汉明码测试程序。
它的有效信息占到了总编码长度的70%,测试程序中自动生成11个字节的原始数据。
原始数据块的长度、存放地址可根据实际情况由用户自己确定,只要将本测试程序的汉明码编码、解码子程序嵌入用户应用程序中,就可直接使用。
本课题就是研究利用C8051F系列单片机来实现(7,4)汉明码的编码。
关键词:单片机;线性分组码;(7,4)汉明码C8051F series MCU(7,4)hamming code encodingABSTRACTIn today's and future information society, digital communication has become an important means of information transmission, the global digital has become a major trend in today's world. However, the digital signal in the transmission process, the additive noise, intersymbol interference, and this will result in error, channel coding, therefore need to reduce the error rate and improve the reliability of digital communications. With the error control coding techniques flourished as the transmission channel interference and effective means by which the more mature coding methods, such as Hamming codes, parity bits, cyclic redundancy code and other coding techniques are widely used in computers, electronics communication, control and other fields. Hamming code which is able to correct a mistake and the code more efficient linear block codes. Encoding and decoding in the project because of its easier to achieve, so widely used. With other similar error check code, Hamming code parity bit also use the concept, followed by an increase in the number of bits of data bits, the validity of data can be verified. Use more than one parity bit, Hamming codes can not only verify the data is valid, but also in the caseof data error location specified in the error. By error correction decoding in a receiver automatically correct the transmission errors to achieve error correction code, known as forward error correction FEC. There are a lot of data-link noise, FEC can increase data throughput. Transmission code in the column by adding redundant bits (also known as error correction bits) can be achieved FEC. However, this method than a simple retransmission protocol to the high cost. Hamming code parity block mechanism reduces the use of forward error correction costs. Software are given below based on the most popular MCS-51 microcontroller Hamming code assembly language test program. It accounts for effective information length of 70% of the total coding and testing program automatically generates 11 bytes of raw data. The length of the original data block, or hold the actual situation according to the user to determine if the Hamming code of the test program encoding and decoding routines embedded in user applications, can be used directly.This topic is to study the use of C8051F MCU to achieve (7,4) hamming code encoding.Keywords:MCU;linear block codes; (7,4) hamming code目录第1章绪论 (1)第2章实验的软硬件环境 (2)2.1 VHDL语言的概述 (2)2.1.1 VHDL语言的发展历史 (2)2.1.2 VHDL语言的特点 (2)2.1.3 VHDL语言的开发流程 (3)2.1.4 VHDL的程序结构 (5)2.1.5 逻辑芯片的分类 (5)2.2 MAX+plusⅡ的使用 (9)第3章基于CPLD的PCM解码电路的设计 (12)3.1 PCM的概述 (13)3.2 解调PCM码的基本原理 (18)3.2.1 位同步的实现 ..................................................................错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信原理课程设计报告书课题名称 基于MATLAB 的(7,4)汉明码编译码设计与仿真结果分析姓 名 学 号学 院 通信与电子工程学院专 业 通信工程指导教师※※※※※※※※※ ※※ ※※ ※※2009级通信工程专业通信原理课程设计2011年 12月 23日基于MATLAB 的(7,4)汉明码编译码设计与仿真结果分析1 设计目的(1)熟悉掌握汉明码的重要公式和基本概念。
(2)利用MATLAB 编程,实现汉明码编译码设计。
(3)理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。
(4)对其仿真结果进行分析。
2 设计要求(1)通过MATLAB 编程,设计出(7,4)汉明码的编码程序。
(2)编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图。
(3)然后对其结果进行分析。
3 设计步骤3.1线性分组码的一般原理线性分组码的构造 3.1.1 H 矩阵根据(7, 4)汉明码可知一般有现在将上面它改写为上式中已经将“⊕”简写成“+”。
上式可以表示成如下矩阵形式:⎪⎩⎪⎨⎧=⊕⊕⊕=⊕⊕⊕=⊕⊕⊕000034613562456a a a a a a a a a a a a ⎪⎭⎪⎬⎫=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅010011010010101100010111012345601234560123456a a a a a a a a a a a a a a a a a a a aa上式还可以简记为H ⋅ A T= 0T或 A ⋅ H T= 0式中A = [a 6 a 5 a 4 a 3 a 2 a 1 a 0]0 = [000]右上标“T”表示将矩阵转置。
例如,H T 是H 的转置,即H TH的第一列,H T 的第二行为H 的第二列等等。
将H 称为监督矩阵。
只要监督矩阵H 给定,编码时监督位和信息位的关系就完全确定了。
H 矩阵的性质:1) H 的行数就是监督关系式的数目,它等于监督位的数目r 。
H 的每行中“1”的位置表示相应码元之间存在的监督关系。
例如,H 的第一行1110100表示监督位a 2是由a 6 a 5 a 4之和决定的。
H 矩阵可以分成两部分,例如式中,P 为r ⨯ k 阶矩阵,I r 为r ⨯ r 阶单位方阵。
我们将具有[P I r]形式的H 矩阵称为典型阵。
2) 由代数理论可知,H 矩阵的各行应该是线性无关的,否则将得不到 r 个线性无关的监督关系式,从而也得不到 r 个独立的监督位。
若一矩阵能写成典型阵形式[P I r],则其各行一定是线性无关的。
因为容易验证[I r]的各行是线性无关的,故[P I r]的各行也是线性无关的。
3.1.2 G 矩阵: 上面汉明码例子中的监督位公式为)(模20001011001110101011101000123456⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡a a a a a a a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101100111010101110100H []r PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=001101101011011001110 ⎪⎨⎧⊕⊕=⊕⊕=35614562a a a a a a a a也可以改写成矩阵形式: 或者写成式中,Q 为一个k ⨯ r 阶矩阵,它为P 的转置,即 Q = P T上式表示,在信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。
我们将Q 的左边加上1个k ⨯ k 阶单位方阵,就构成1个矩阵GG 称为生成矩阵,因为由它可以产生整个码组,即有或者因此,如果找到了码的生成矩阵G[I k Q ]形式的生成矩阵称为典型生成矩阵。
由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后。
这种形式的码称为系统码。
G 矩阵的性质:1) G 矩阵的各行是线性无关的。
因为由上式可以看出,任一码组A 都是G 的各行的线性组合。
G 共有k 行,若它们线性无关,则可以组合出2k 种不同的码组A ,它恰是有k 位信息位的全部码组。
若G 的各行有线性相关的,则不可能由G 生成2k 种不同的码组了。
2) 实际上,G 的各行本身就是一个码组。
因此,如果已有k 个线性无关的码组,则可以用其作为生成矩阵G ,并由它生成其余码组。
3.1.3 校正子S当接收码组有错时,E ≠ 0,将B 当作A 代入公式(A ⋅ H T = 0)后,该式不一定成立。
在错码较多,已超过这种编码的检错能力时,B 变为另一许用码⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡3456012101111011110a a a a a a a [][][]Q 34563456012011101110111a a a a a a a a a a a =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==0110001101001011001001111000 Q G k I [][]G ⋅=34560123456a a a a a a a a a a a GA ⋅=][3456a a a a组,则该式仍能成立。
这样的错码是不可检测的。
在未超过检错能力时,上式不成立,即其右端不等于0。
假设这时该式的右端为S ,即B ⋅ H T = S将B = A + E 代入上式,可得S = (A + E ) H T = A ⋅ H T + E ⋅ H T 由于A ⋅ H T = 0,所以S = E ⋅ H T式中S 称为校正子。
它能用来指示错码的位置。
S 和错码E 之间有确定的线性变换关系。
若S 和E 之间一一对应,则S 将能代表错码的位置。
3.2 (7,4)汉明码的构造原理在偶数监督码中,由于使用了一位监督位a 0,它和信息位a n-1 … a 1一起构成一个代数式:在接收端解码时,实际上就是在计算若S = 0,就认为无错码;若S = 1,就认为有错码。
现将上式称为监督关系式,S 称为校正子。
由于校正子S 只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。
若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。
由于两个校正子的可能值有4中组合: 00,01,10,11,故能表示4种不同的信息。
若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。
同理,r 个监督关系式能指示1位错码的(2r – 1)个可能位置。
一般来说,若码长为n ,信息位数为k ,则监督位数r =n -k 。
如果希望用r 个监督位构造出r 个监督关系式来指示1位错码的n 种可能位置,则要求然后根据(7,4)汉明码的编码原理,画出程序设计的流程图:021=⊕⊕⊕--a a a n n 021a a a S n n ⊕⊕⊕=-- 1212++≥≥-r k nr r或图1 编码流程图然后根据流程图进行编写程序。
4、程序设计clear all;close all;N=30000;K=4*N;%信息长度Q=8;%调制形式num=zeros(20,1);%误比特数ber=zeros(20,1);%误比特率for SNR=1:1:20%生成矩阵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 ];%监督矩阵H=[1 1 1 0 1 0 01 1 0 1 0 1 01 0 1 1 0 0 1];A=zeros(7*N,1);编码后信号S=zeros(N,3);%校验子E=zeros(7*N,1);%错误图样I=zeros(7*N,1);%解调纠错后的矩阵NEW=zeros(K,1);%收到的信号a=randsrc(K,1,[0,1]);%信源%编码for k=1:Ncode=[a(4*k-3) a(4*k-2) a(4*k-1) a(4*k)]*G;for l=0:6A(7*k-l)=mod(code(7-l),2);endend%8PSK调制Xa=pskmod(A,Q);%信道传输加噪Xb=awgn(Xa,SNR);%解调B=pskdemod(Xb,Q);%编码for n=1:NM=7*n-6;Z=4*n-3;T=7*n-3;V=4*n;L=7*n;s=B(M:L,1)'*H';S(n,:)=mod(s,2);if S(n,:)==[0 0 0]E(M:L,1)=[0 0 0 0 0 0 0]';elseif S(n,:)==[0 0 1]E(M:L,1)=[0 0 0 0 0 0 1]';elseif S(n,:)==[0 1 0]E(M:L,1)=[0 0 0 0 0 1 0]';elseif S(n,:)==[0 1 1]E(M:L,1)=[0 0 0 0 1 0 0]';elseif S(n,:)==[1 0 0]E(M:L,1)=[0 0 0 1 0 0 0]';elseif S(n,:)==[1 0 1]E(M:L,1)=[0 0 1 0 0 0 0]';elseif S(n,:)==[1 1 0]E(M:L,1)=[0 1 0 0 0 0 0]';elseif S(n,:)==[1 1 1]E(M:L,1)=[1 0 0 0 0 0 0]';endP=B(M:L,1)+E(M:L,1);I(M:L,1)=mod(P,2);NEW(Z:V,1)=I(M:T,1);end[num(SNR,:),ber(SNR,:)]=biterr(NEW,a); endplot(num,'b:s'); %画出误比特数xlabel('信噪比');ylabel('误比特数');figureplot(ber,'k-*'); %画出误比特率 xlabel('信噪比'); ylabel('误比特率');5、设计结果及分析5.1通过对以上程序的编译运行仿真可以得到以下两个仿真图。
x 104信噪比误比特数图2 汉明码译码误比特数图0246810121416182000.050.10.150.20.250.30.350.40.450.5信噪比误比特率图3 汉明码译码误比特率图5.2 编码后信号A 与经过校验子S 校验后译码得到的信号截图图 4 编码后信号A 的截图图5 译码得到的信号截图5.3 仿真结果分析(1)观察图2和图3我们可以看到误比特数和误比特率随信噪比的增加而减小,并最后趋于0.由图4和图5,再联系前面校正子s与各码元之间的对应关系,我们可以发现校正子s的重要作用。