纠错码入门 - Lecture-4
- 格式:pdf
- 大小:781.27 KB
- 文档页数:53
5.3.6 海明纠错码海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。
海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是1就变成0,原来是0就变成1)来将其纠正。
要采用海明码纠错,需要按以下步骤来进行:计算校验位数→确定校验码位置→确定校验码→实现校验和纠错。
下面来具体介绍这几个步骤。
本文先介绍除最后一个步骤的其它几个步骤。
1. 计算校验位数要使用海明码纠错,首先就要确定发送的数据所需要要的校验码(也就是“海明码”)位数(也称“校验码长度”)。
它是这样的规定的:假设用N表示添加了校验码位后整个信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位,它们之间的关系应满足:N=K +r≤2r-1。
如K=5,则要求2r-r≥5+1=6,根据计算可以得知r的最小值为4,也就是要校验5位信息码,则要插入4位校验码。
如果信息码是8位,则要求2r-r≥8+1=9,根据计算可以得知r的最小值也为4。
根据经验总结,得出信息码和校验码位数之间的关系如表5-1所示。
表5-1 信息码位数与校验码位数之间的关系现假设原来的8位信息码为10011101,因现在还没有求出各位校验码值,现在这些校验码位都用“?”表示,最终的码字为:??1?001?1101。
3. 确定校验码经过前面的两步,我们已经确定了所需的校验码位数和这些校验码的插入位置,但这还不够,还得确定各个校验码值。
这些校验码的值不是随意的,每个校验位的值代表了代码字中部分数据位的奇偶性(最终要根据是采用奇校验,还是偶校验来确定),其所在位置决定了要校验的比特位序列。
总的原则是:第i位校验码从当前位开始,每次连续校验i(这里是数值i,不是第i位,下同)位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。
《纠错码学习大纲》陆以勤第三章 线性分组码一、线性分组码● 线性分组码[n ,k ,d ]是方程 HC T = 0T 的k 维解空间, H 是由F q (q = p m , p 为素数)中元素组成的秩为n-k 的n-k ⨯ n 矩阵。
张成该码空间的一组基组成的k ⨯ n 矩阵G 称为[n , k , d ]的生成矩阵. d 可由两种方法求出(1) 定理4: d = )(min d]k,.[n c W c ∈; (2) 定理7: 若H 的任意r 列线性无关,并存在r +1列线性相关,则d = r +1; 反之,若d = r +1,则H 的任意r 列线性无关,而必存在有相关的r +1列.由此可知, 只要找到一个秩为n-k 的n-k ⨯ n 矩阵H 或 k 个线性无关的n 维向量 ( 由它们可构成G ) 就可以生成一个线性分组码[n ,k ]。
关键是为使[n ,k ]有纠t 个错误的能力, 必须要d ≥ 2t+1. 因此, H 必须满足任意2t 列线性无关,并存在2t +1列线性相关. 对于二元码, 只要H 任意两列不等并且不含全0的列, 这个码至少可纠一个错.例如, H 的列向量按1 ~ 2m -1的二进制排列, 任意两列线性无关, 而存在线性相关的3列, 因此可得[2m -1, 2m -1-m, 3]的码(汉明码).● 由H 的标准形式H = [Q I n - k ]或相应的G 的标准形式G = [I k -Q T ]确定的线性分组码称为系统码,系统码保留了信息位并在后面加监督位.● 若把H 作为生成矩阵则生成[n ,k ,d ]的对偶码[n , n – k , d’], G 是它的监督矩阵.● 由已知码[n ,k ]可对信息段和监督段进行简单的增删构造成新的码, 从而使信息段和监督段的长度适合不同的需要. 这种构造过程的关键问题是新码最小距离的变化. 这可从监督矩阵变换后列向量的相关性的变化来研究.例如, 由 H '=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-+---11100||||ΛM H 可把一个偶检验位加到原码字的最后, 使[n , k ]扩展为[n +1, k ]. 对于汉明码[2m -1, 2m -1-m , 3], 由于d = 3, H 任两列线性无关同时存在线性相关的3列, 而在H 中, 任三列线性无关(最后一位3个1相加不为0), 但存在线性相关的4列(原在H 中线性相关的3列加上H '的最后一列),所以H '确定了扩展汉明码[2m , 2m -1-m , 4].二、线性分组码的译码● 伴随式译码由于线性分组码[n ,k ,d ]是方程 HC T = 0T 的解空间, 任一码字C 满足C T H =0. 若C 经过信道到达终端变为R = C +E . 如没有发生错误(E = 0), 则R T H =0; 如果发生错误即E ≠ 0, 这时有两种情况: 1) E ∈ [n ,k ,d ], 这时R ∈ [n ,k ,d ], 也就是R 变成了另外一个码字, R T H 仍等于0; 2) E ∉ [n ,k ,d ], 这时R T H = C T H + E T H = E T H ≠ 0, 只与E 有关. 由此可见, 如果码字间的距离足够大以至发生了错误也不会变成另一个码字, 则可从S = R T H 判断码字在传输中是否有错,错误的图样是什么. S 称为伴随式.通过伴随式与错误的图样的一一对应关系来译码叫伴随式译码。
第二节 纠错编码原理一、纠错编码的原理一般来讲,信源发出的消息均可用二进制信号来表示。
例如,要传送的消息为A 和B ,则我们可以用1表示A ,0表示B 。
在信道传输后产生了误码,0错为1,或1错为0,但接收端却无法判断这种错误,因此这种码没有任何抗干扰能力。
如果在0或1的后面加上一位监督位(也称校验位),如以00表示A ,11表示B 。
长度为2的二进制序列共有种组合,即00、01、10、11。
00和11是从这四种组合中选出来的,称其为许用码组,01、10为禁用码。
当干扰只使其中一位发生错误,例如00变成了01或10,接收端的译码器就认为是错码,但这时接收端不能判断是哪一位发生了错误,因为信息码11也可能变为01或10,因而不能自动纠错。
如果在传输中两位码发生了错误,例如由00变成了11,译码器会将它判为B ,造成差错,所以这种1位信息位,一位监督位的编码方式,只能发现一位错误码。
224=按照这种思路,使码的长度再增加,用000表示A ,111表示B ,这样势必会增强码的抗干扰能力。
长度为3的二进制序列,共有8中组合:000、001、010、011、100、101、110、111。
这8种组合中有三种编码方案:第一种是把8种组合都作为码字,可以表示8种不同的信息,显然,这种编码在传输中若发生一位或多位错误时,都使一个许用码组变成另一个许用码组,因而接收端无法发现错误,这种编码方案没有抗干扰能力;第二种方案是只选四种组合作为信息码字来传送信息,例如:000、011、101、110,其他4种组合作为禁用码,虽然只能传送4种不同的信息,但接收端有可能发现码组中的一位错误。
例如,若000中错了一位,变为100,或001或010,而这3种码为禁用码组。
接收端收到禁用码组时,就认为发现了错码,但不能确定错码的位置,若想能纠正错误就还要增加码的长度。
第三种方案中规定许用码组为000和111两个,这时能检测两位以下的错误,或能纠正一位错码。