简介:
这是本专栏信道编码/Channel Coding的第三站,想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文。而在本篇文章中,将介绍汉明码(Hamming Code)的构成,而且会着重讲解汉明码的线性分组码形式,因为这是我学习过程中最大的疑惑。
目录
一、汉明码的构造
汉明码的构造原理非常简单,在CSDN其他文章也有详细的描述,所以我将只讲如何构造而不讲其背后的数学原理。
1.1 校验码位置
汉明码的校验码位置在 ,也即 2的指数倍的位置上。形象一点就是:
1.2 进行奇偶校验的组
我们先直接给出结论,再解释怎么回事。我们先看(7,4)的Hamming Code,如下图:
由1.1我们知道校验位在bit1,bit2,bit3。
那么进行奇偶校验的组就有三组:
第一组:bit1,bit3,bit5,bit7
第二组:bit2,bit3,bit6,bit7
第三组:bit4,bit5,bit6,bit7
为什么呢?我们将比特的位置从十进制改成二进制就能看出蹊跷,承接上面:
第一组:001,011,101,111,(会发现都形如XX1)
第二组:010,011,110,111,(会发现都形如X1X)
第三组:100,101,110,111,(会发现都形如1XX)
所以进行奇偶校验的组就是 十进制的比特位置 化为 二进制 之后,形如XXX1,XX1X,X1XX,....的分为一组进行奇偶校验。
由于通常我们进行偶校验,那么操作其实就是异或,也就得到了约束关系:
通过上面的约束关系我们就能得到汉明码!
二、汉明码的线性分组码形式
2.1 奇怪的地方
第一点: 关于线性分组码可以看本专栏的另一篇文章 线性分组码 ,初雪的时候我非常疑惑,因为根据上面的约束关系,我们写出来的校验矩阵H是:
你会发现,H根本不能通过行变换变成形如: 的形式。
第二点: 实验生成的(7,4)汉明码似乎没有所谓的校验码在2的指数倍上的约束关系,而是用生成矩阵生成的,它的P长这样:
这是怎么回事?
2.2 解惑
回忆线性分组码的性质,实际上H可以进行列变换去改变码字映射关系,而列变换改变的仅仅是可用码组和禁用码组而已,意思就是,原来是可用码组的跑到禁用码组去了,原来是禁用码组的跑到可用码组里面去了。所以我们可以对上图的H进行列变换,如下图:
这就解释了为什么我学习中遇到的问题!