汉明码纠错原理

一:汉明码的纠错

在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。

二:使用汉明码纠错的问题,请专业人士赐教,尽详!

不知道这个问题

三:急!求答案在〔7,4〕汉明码的汉明距离dmin=?他最多能纠错?位。检错?位

342

四:汉明码的汉明距离是多少?其纠错,检错能力怎样

汉明码的码长是特定的,二元码 的话 ,普通汉明码码长是(2^m-1),拓展汉明码码长正好是(2^m)。(也就是2的整数次方减1和2的整数次方)。 多元码的话,就跟冗余r有关。 比如p元汉明码的码长是(p^r - 1)/(p-1).

所以说汉明码的码长是可变的,但不是想多就是多少,而是要看你的编码方法,比如你所采用的生成矩阵。

五:汉明码这个顺序是怎么得到的

前边是基本的二进制码。后边的校验码是用来纠错的。

六:汉明码的编码原理?

以数据码1101为例讲讲汉明码的编码原理,此时D8=1、D4=1、D2=0、D1=1,在P1编码时,先将D8、D4、D1的二进制码相加,结果为奇数3,汉明码对奇数结果编码为1,偶数结果为0,因此P1值为1,D8+D2+D1=2,为偶数,那么P2值为0,D4+D2+D1=2,为偶数,P3值为0。这样,参照上文埂位置表,汉明码处理的结果就是1010101。在这个4位数据码的例子中,我们可以发现每个汉明码都是以三个数据码为基准进行编码的。下面就是它们的对应表:

汉明码

编码用的数据码

P1

D8、D4、D1

P2

D8、D2、D1

P3

D4、D2、D1

从编码形式上,我们可以发现汉明码是一个校验很严谨的编码方式。在这个例子中,通过对4个数据位的3个位的3次组合检测来达到具体码位的校验与修正目的(不过只允许一个位出错,两个出错就无法检查出来了,这从下面的纠错例子中就能体现出来)。在校验时则把每个汉明码与各自对应的数据位值相加,如果结果为偶数(纠错代码为0)就是正确,如果为奇数(纠错代码为1)则说明当前汉明码所对应的三个数据位中有错误,此时再通过其他两个汉明码各自的运算来确定具体是哪个位出了问题。

七:汉明码的校验方法

如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。在一个7位的信息中,单个位出错有7种可能,因此3个错误控制位就足以确定是否出错及哪一位出错了。汉明码SECDED(single error correction, double error detection)版本另外加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。因此,当发送端与接收端的比特样式的汉明距离(Hamming distance)小于或等于1时(仅有1 bit发生错误),可实现可靠的通信。相对的,简单的奇偶检验码除了不能纠正错误之外,也只能侦测出奇数个的错误。下列通用算法可以为任意位数字产生一个可以纠错一位的汉明码:1.从1开始给数字的数据位(从左向右)标上序号, 1,2,3,4,5...2.将这些数据位的位置序号转换为二进制,1, 10, 11, 100, 101,等。3.数据位的位置序号中所有为二的幂次方的位(编号1,2,4,8,等,即数据位位置序号的二进制表示中只有一个1)是校验位4.所有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位5.每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的位置数值的二进制表示(1) 校验位1覆盖了所有数据位位置序号的二进制表示倒数第一位是1的数据:1(校验位自身,这里都是二进制,下同),11,101,111,1001,等(2) 校验位2覆盖了所有数据位位置序号的二进制表示倒数第二位是1的数据:10(校验位自身),11,110,111,1010,1011,等(3) 校验位4覆盖了所有数据位位置序号的二进制表示倒数第三位是1的数据:100(校验位自身),101,110,111,1100,1101,1110,1111,等(4) 校验位8覆盖了所有数据位位置序号的二进制表示倒数第四位是1的数据:1000(校验位自身),1001,1010,1011,1100,1101,1110,1111,等(5) 简而言之,所有校验位覆盖了数据位置和该校验位位置的二进制与的值不为0的数。采用奇校验还是偶校验都是可行的。偶校验从数学的角度看更简单一些,但在实践中并没有区别。校验位一般的规律可以如下表示: 观察上表可发现一个比较直观的规律:第i个检验位是第2i-1位,从该位开始,检验2i-1位,跳过2i-1位……依次类推。例如上表中第3个检验位p4从第23-1=4位开始,检验4、5、6、7共4位,然后跳过8、9、10、11共4位,再检验12、13、14、15共4位……

八:为什么汉明码纠错的过程中,新的检验位的状态即指出了编码的错误信息位

因为hamming code中的检验位是由公式2^r>=m+r+1得到冗余位长度(位数)的

其中

r=redundancy bits(冗余的位数)即冗余的长度有多少bit的长度

m=data bits (数据位数)

r得到后冗余位数(即检验位)分别加在原数据的2的0次方到r次方这些位置上,由此公式获得的r位二进制数必然大于m,即绝对可以指定m位原始数据中任意出错位的位置。

之后再将0~m进行二进制列表,对应检验位的末位从0~m的二进制的末位开始进行判断那些数相应位置含1,并标识出这些数,同时进行奇校验或者偶校验,进行判断到底每一位检验位填写0或者是1

由于多次对原数据的各位的状态(0、1状态)进行了校验才得到了检验位的状态,故而检验位状态包含了原数据的正确信息,一旦数据出错检验位状态会随之改变并自动指出出错信息位。

扫一扫手机访问

发表评论