线性分组码是一类重要的差错控制编码,其编码规则满足**线性性质**:任意两个合法码字的模2加仍是合法码字

2. 线性分组码(Linear Block Codes)

线性分组码是一类重要的差错控制编码,其编码规则满足线性性质:任意两个合法码字的模2加仍是合法码字。它具有良好的数学结构,便于分析、设计和实现。


一、基本概念
概念定义
信息码元原始要传输的数据位,共 $ k $ 位,记为 $ \mathbf{u} = (u_1, u_2, …, u_k) $
监督码元(校验位)编码过程中添加的冗余位,共 $ r = n - k $ 位,用于检错或纠错
码字由信息位和监督位组成的完整编码序列,长度为 $ n $,即 $ \mathbf{c} = (c_1, c_2, …, c_n) $
误码图样(Error Pattern)表示在传输中发生错误的位置,如 $ \mathbf{e} = (0,1,0,0,1) $ 表示第2和第5位出错
校正子(Syndrome)接收端根据接收码计算的一个向量,用于判断是否有错及定位错误位置

✅ 接收码:$ \mathbf{r} = \mathbf{c} + \mathbf{e} $
校正子:$ \mathbf{s} = \mathbf{r} \cdot \mathbf{H}^T = (\mathbf{c} + \mathbf{e}) \cdot \mathbf{H}^T = \mathbf{e} \cdot \mathbf{H}^T $(因为 $ \mathbf{c}\cdot\mathbf{H}^T=0 $)
校正子只与错误有关,与原始码字无关


二、监督方程与监督矩阵
1. 监督方程
  • 是一组线性方程,描述监督位如何由信息位生成
  • 例如对于 (7,4) 汉明码:
    {p1=d1+d2+d4p2=d1+d3+d4p3=d2+d3+d4 \begin{cases} p_1 = d_1 + d_2 + d_4 \\ p_2 = d_1 + d_3 + d_4 \\ p_3 = d_2 + d_3 + d_4 \end{cases} p1=d1+d2+d4p2=d1+d3+d4p3=d2+d3+d4
    其中 $ d_i $ 是信息位,$ p_j $ 是校验位
2. 监督矩阵 $ \mathbf{H} $
  • 维度为 $ (n-k) \times n $,用于检测错误
  • 满足:所有合法码字 $ \mathbf{c} $ 都满足 $ \mathbf{c} \cdot \mathbf{H}^T = \mathbf{0} $
  • 若 $ \mathbf{r} \cdot \mathbf{H}^T \neq \mathbf{0} $,则说明有错

📌 示例:(7,4) 汉明码的监督矩阵为:
H=[101010101100110001111] \mathbf{H} = \begin{bmatrix} 1 & 0 & 1 & 0 & 1 & 0 & 1 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ \end{bmatrix} H=100010110001101011111


三、生成方程与生成矩阵
1. 生成方程
  • 描述如何从信息位 $ \mathbf{u} $ 得到整个码字 $ \mathbf{c} $
  • $ \mathbf{c} = \mathbf{u} \cdot \mathbf{G} $
2. 生成矩阵 $ \mathbf{G} $
  • 维度为 $ k \times n $,若为系统码,则形式为:
    G=[Ik∣P] \mathbf{G} = [\mathbf{I}_k \mid \mathbf{P}] G=[IkP]
    其中 $ \mathbf{I}_k $ 是单位阵,$ \mathbf{P} $ 是 $ k \times (n-k) $ 的校验子矩阵

📌 示例:(7,4) 汉明码的生成矩阵为:
G=[1000101010011000101110001011] \mathbf{G} = \begin{bmatrix} 1 & 0 & 0 & 0 & 1 & 0 & 1 \\ 0 & 1 & 0 & 0 & 1 & 1 & 0 \\ 0 & 0 & 1 & 0 & 1 & 1 & 1 \\ 0 & 0 & 0 & 1 & 0 & 1 & 1 \\ \end{bmatrix} G=1000010000100001111001111011

✅ $ \mathbf{G} $ 和 $ \mathbf{H} $ 满足关系:$ \mathbf{G} \cdot \mathbf{H}^T = \mathbf{0} $


四、汉明码的构造

汉明码是一种能纠正单个错误的线性分组码,记作 $ (n, k) $,其中:

  • $ n = 2^m - 1 $
  • $ k = 2^m - m - 1 $
  • $ r = n - k = m $
  • 最小距离 $ d_{\min} = 3 $ → 可纠1错
构造步骤:
  1. 确定校验位数 $ m $,使得 $ 2^m \geq n+1 = k + m + 1 $
  2. 将码字位置编号为 1 到 $ n $
  3. 所有 $ 2^i $ 位置作为校验位(如第1、2、4、8…位)
  4. 其余为信息位
  5. 每个校验位负责其二进制表示中某一位为1的所有位置进行偶校验(或奇校验)

✅ 校正子 $ \mathbf{s} = \mathbf{r} \cdot \mathbf{H}^T $ 的值直接对应出错位的地址(即错误位置)


五、循环码及其特点

循环码是线性分组码的一个重要子类,具有循环移位不变性

特点:
  • 任一码字左/右循环移位后仍是一个合法码字
  • 可用多项式表示,便于硬件实现
  • 包括 CRC、BCH、RS 等都属于循环码
1. 生成多项式 $ g(x) $
  • 是一个次数为 $ r = n-k $ 的因式,整除 $ x^n - 1 $
  • 所有码多项式 $ c(x) $ 都是 $ g(x) $ 的倍数

✅ 如 (7,4) 循环码可用 $ g(x) = x^3 + x + 1 $

2. 编码过程(系统形式)
  1. 将信息多项式 $ u(x) $ 乘以 $ x^{n-k} $(相当于左移 $ r $ 位)
  2. 计算余式 $ r(x) = [x^{n-k}u(x)] \mod g(x) $
  3. 码多项式为:$ c(x) = x^{n-k}u(x) + r(x) $
3. 译码过程
  1. 接收多项式 $ r(x) $
  2. 计算伴随式 $ s(x) = r(x) \mod g(x) $
  3. 若 $ s(x)=0 $,无错;否则查表或使用算法定位错误

六、交织码(Interleaving Code)

用于对抗突发错误(burst error),将连续传输中的长串错误分散成多个独立的随机错误,以便原编码能有效纠正。

类型:
  • 块交织器(Block Interleaver)
  • 卷积交织器
工作原理:
  • 发送端:将多个码字按列写入矩阵,再按行发送
  • 接收端:按行接收,按列读取恢复原始顺序

✅ 即使出现一段连续错误,解交织后每个码字最多只错一位,可被汉明码等纠正


七、循环冗余检验码(CRC 码)

CRC(Cyclic Redundancy Check) 是一种广泛应用的检错码,不属于纠错码,常用于数据链路层(如以太网、Wi-Fi)、存储系统等。

原理:
  • 使用生成多项式 $ g(x) $ 进行模2除法
  • 发送端附加 $ r $ 位校验码,使整体能被 $ g(x) $ 整除
  • 接收端重新计算余数,若不为0则判错
常见标准多项式:
名称多项式应用场景
CRC-8$ x^8 + x^2 + x + 1 $蓝牙
CRC-16$ x^{16} + x^{15} + x^2 + 1 $USB、Modbus
CRC-32$ x^{32} + … + 1 $以太网、ZIP文件

✅ CRC 可检测:

  • 所有单比特错
  • 所有双比特错
  • 奇数个错误
  • 长度 ≤ $ r $ 的突发错误
  • 大部分更长的突发错误

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值