(7,4)汉明码(Hamming Code)BPSK的C语言仿真实现

本文介绍了(7,4)汉明码的编码和译码纠错原理,以及在BPSK调制中的C语言仿真过程。详细阐述了线性分组码的概念,汉明码的生成矩阵和校验矩阵,以及在高斯噪声信道下如何进行信道编码和解码。同时,讨论了信噪比对性能的影响,并展示了仿真结果和无编码的对比。" 113169288,9054010,Banach-Steinhaus定理在概率论与泛函分析中的应用,"['概率论', '泛函分析']
摘要由CSDN通过智能技术生成

(7,4)汉明码(Hamming Code)BPSK的C语言仿真实现

本文首先解释汉明码的编码译码方式和纠错原理,并给出于AWGN信道下,信道编码采用(7,4)汉明码,调制采用BPSK方式的C语言实现方式和结果。

一、汉明码的编译码纠错原理

1 线性分组码的编码原理

汉明码是一种特殊的线性分组码,首先需要介绍的是线性分组码的基本原理。
按照基本的纠错码原理,线性分组码同样有着信息位和纠错位,二者构成一组二进制分组码,设其长度为 n n n,其中信息位数为 k k k,纠错位数为 m m m,记为 ( n , k ) \left( {n,k} \right) (n,k)。结构如下图所示:
74汉明码构成

校验位生成的方式我们以生成矩阵来表示。给定长度为 M = 2 k M=2^k M=2k个信息序列集合映射到长度为 n n n 2 n 2^n 2n个对应码字可以用一个矩阵 G G G表示,称其为生成矩阵: c m = u m G {c_m} = {u_m}G cm=umG其中 1 ≤ m ≤ 2 k 1 \le m \le {2^k} 1m2k u m u_m um表示长度为 k k k的二进制矢量(行向量),即信息序列; c m c_m cm表示对应码字。此公式均在伽罗华域 G F ( 2 ) GF(2) GF(2)上运算,下同。
可见,生成矩阵为 k × n k\times n k×n阶的。为使得线性分组码为系统的,必须使生成矩阵行满秩。故一般我们设定生成矩阵的形式如下: G = [ I k ∣ P ] G = \left[ { {I_k}|P} \right] G=[IkP]其中 I k I_k Ik表示 k k k阶单位矩阵, P P P为一个 k × m k\times m k×m阶的矩阵,线性代数告诉我们,任何一个行满秩矩阵均可以通过行运算和列置换得到以上形式的矩阵,即任意系统线性分组码均对应等价的以上形式的矩阵。

2 线性分组码的译码纠错原理

以上我们给出了编码的过程,下面给出译码的过程。定义一个校验矩阵 H H H。由于码字 C C C虽然是 n n n长度的,但是其后 m m m位是由前 k k k位生成的,故其是 n n n维空间的一个 k k k维子空间。校验时我们认为当码字和校验矩阵相乘得零向量则认为无错码,此时利用正交特性,与码字 C C C正交的补集,即与 C C C中码字正交的所有 n n n维二进制向量集合,应该是 n n n维空间的一个 n − k n-k nk,即 m m m维子空间。这个子空间定义了一个与 C C C对偶的线性分组码,其总长依旧为 n n n,但其信息位为 m m m,校验位为 k k k。偶线性分组码的生成矩阵设为 H H H(即原线性分组码的校验矩阵),因为 C C C内的任何码字都正交与 H H H的任意一行(显然,令 u k = [ 1 , . . . , 1 ] u_k = \left[1, ..., 1\right] uk=[1,...,1] H H H的任意一行均为码字),故对于所有的码字 c ∈ C c \in C cC,均有: c H T = 0 c{H^T} = 0 cHT=0其中 0 0 0表示零向量。相反的, G G G中的所有码字也处于向量空间 C C C内,故有 G H T = 0 G{H^T} = 0 GHT=0此时由于 G G G的结构为 G = [ I k ∣ P ] G = \left[ { {I_k}|P} \right] G=[IkP],故可以构造出 H H H矩阵的形式如下: H = [ − P T ∣ I m ] H = \left[ { - {P^T}|{I_m}} \right] H=[PTIm]考虑到二进制码,故有 H = [ P T ∣ I m ] H = \left[ { {P^T}|{I_m}} \right] H=[PTIm]由此可以得到译码的校验矩阵。

  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值