【纠错编码原理】1-纠错编码的基本概念:简单入门
纠错编码的基本概念
纠错编码就是在信息序列中加入一些冗余码元,组成一个相关的码元序列——码字,译码时利用码元之间的相关性质类检测错误和纠正错误。不同的纠错编码方法有不同的检错或纠错能力。一般说来,付出的代价越大,检错或纠错的能力就越强,提高传输的可靠性是以降低传输效率为代价的。
😗 1. 理论基础
😙 1.1 纠错编码基本原理
数字通信的一组矛盾是可靠性与快速性。当要求快速时,每个数码单元占据的时间就更短,波形变窄,能量变小,同时会导致干扰后产生错误的可能性增加,传送消息的可靠性降低。如果要追求可靠性,则使得传送信息的速率变慢。
香农第二定理是有噪信道编码定理,作为一个存在性定理,其指出了可以用任意接近信道容量的信息传输速率传递信息,且出错的概率可以任意小。
纠错编码,顾名思义,是当信息经过噪声信道传输或要恢复存储的数据时用来纠错的。用来传输信息的物理介质叫做信道(电话线、卫星连接等),不同的信道产生不同种类的噪声,对传输的数据造成不同的损害。纠错编码就是试图去克服信道中的噪声带来的损害。
纠错编码的基本思想是在消息通过一个有噪信道传输之前以多余符号的形式在消息中增添冗余度,这种冗余度是在一定的规则控制下添加的。编码后的信息在传输室还可能会遭到噪声的损害。在接收端,如果错误码数在该码的设计限度内,则原始消息可以用受损的消息中恢复。
一个数字通信系统可以由下图表示。
纠错编码的意义就是克服噪声源对通信可靠性带来的干扰,在这种情况下,可以将纠错编码看成是为提高通信系统性能而设计的信号变换。
😊1.2 纠错编码的分类
差错控制编码从功能的角度可以为以下三类:
- 检错码(Error Detection Code):只能发现错误不能纠正错误,在一些仅需要给出错误提示和ARQ(Automatic Repeat reQuest,自带请求重发)系统中使用该类码。
- 纠错码(Error Correcting Code):能发现错误也能纠正错误,FEC(Forward Error Correction,前向纠错)和HEC(Hybrid Error Correction,混合纠错)系统中都使用这类码。
- 纠删码:能发现错误并纠正或删除错误。
差错控制系统大致可以分为前向纠错、重传反馈和混合纠错三种方式。
- 前向纠错FEC方式:指发送端发送有纠错能力的码,接收端收到码后能通过纠错译码器自动纠正传输中的错误。优点:不需要反馈通道,能一对多的同时通信,适合移动通信,译码实时性好,控制电路简单。缺点是译码设备浮子,编码效率较低。
- 重传反馈ARQ方式:发送端发出能检错码,接收端译码器收到后,判断在传输中有无错误产生,并通过反馈通道把检测结果告诉发送端。发送端将认为有错的消息再次传送,直到接收端认为正确接受为止。该方式的缺点是控制电路较为复杂,传输信息的连贯性和实时性较差,需要一根从接收端到发送端的反馈通道。优点是:译码设备简单,在冗余度一定的情况下,码的检错能力要比纠错能力高得多,所以系统能获得极低的误码率。
- 混合纠错HEC方式:是上述两种方式的结合,既能检错也能纠错,若错误个数在码的纠错能力以内则自动进行纠错,若错误个数超过了纠错能力但能检测出来,则通过反馈通道告知重发,这种方式在一定程度上避免了FEC方式译码设备复杂和ARQ方式信息连贯性差的缺点。
设计差错控制系统时需要考虑的因素有:
- 满足用户对误码率的要求
- 有尽可能高的信息传输速率
- 有尽可能简单的编译码算法且易于实现
- 可接受的成本
纠错编码的分类方法有很多,其关系由下图所示:

- 按照对信息元处理方法来分类:
- 分组码是把信源输出的信息序列以
个码元划分为一段,通过编码器把这段k个信息元按照一定的规则产生 个校验单元,输出码长为 的一个码组。这种编码中每一个码组的校验元仅与本组的信息元有关,而与别的信息元无关。分组码用 表示, 代表码长, 表示信息位数。分组码的构成可以表示为: - 卷积码是把信源输出的信息序列以
个码元分为一段,通过编码器输出长为 的码段,但是该码段的 的校验元不仅与本组的信息元有关,而且也与其前 段的信息元有关,一般称 为编码存储,因此卷积码用 表示。
- 分组码是把信源输出的信息序列以
- 根据校验元与信息元之间的关系来分类:
- 线性码:校验元与信息元之间的关系为线性关系,满足线性叠加原理。
- 非线性码:不满足线性叠加原理。
- 根据纠正错误的类型来分类:
- 纠随机错误码。
- 纠突发错误码。
- 纠同步错误码。
- 既能纠随机错误也能纠突发错误码。
- 根据每个码元的取值来分类:
- 二进制码。
- q进制码,
, 为素数, 为正整数。
- 根据码的结构来分类:
- 循环码。
- 非循环码。
- 系统码。
- 完备码。
- 根据每个信息元保护能力是否相等来分类:
- 等保护纠错码。
- 不等保护纠错码。
😯 2. 基本定义
定义1-1 码字(Codeword)是一些符号的序列。
定义1-2 码是称为码字的向量集合。
定义1-3 一个码字(或任何向量)的汉明重量(Hamming Weight)等于该码字中的非零元素个数。码字
定义1-4 两个码字之间的汉明距离是码字不相同的未知数目,两个码字
两个码字,例如一个包含
两个码字之间的汉明距离为3,因为:(本文关于0,1码字的加减法均为模2加减法)
定义1-5 一个分组码具有固定长度的码字集合构成,这些码字的固定长度称为分组长度,记为
定义在
例如,定义一个可以表示两个比特的二元数字的编码规则:
上面规则决定了,码
- 原始序列:1001010011……
- 两个比特一组分割:10 01 01 00 11 ……
- 对应码字替换:11110 10100 10100 00000 11001 ……
这样就实现了一个3冗余度的二比特信息编码过程。
定义1-6: 一个
因为有冗余度,所以码率总是小于1。
定义1-7: 一个码的最小距离(Minimum Distance)为任何两个码字之间的最小汉明距离。如果码
最小距离为
定义1-8: 一个码字的最小重量(Minimum Weight)是所有非零码字的最小重量,记为
定义1-9: 设发送码
由该定义可知
定义1-10: 在错误图样中,若“1”集中与某个长度
😰 3. 译码和编码规则
😩 3.1 有噪信道编码定理
对于有噪信道,只要通过足够复杂的编码方法,就能使信息率达到信道的极限通过能力——信道容量,同时使平均差错率逼近零。这一结论称为香农第二编码定理或有噪信道编码定理,是有关信息传输的最基本结论。
香农第二编码定理:若信道是离散、无记忆、平稳的,且信道容量为
香农第二编码定理实际上是一个存在性定理,它指出:在
😭 3.2 译码规则
在一个二元对称信道中,单个符号错误传递概率为
假设有一个二元对称信道,符号输入等概分布,信道输出端的译码规则为:接收到0译为0,接收到1译为1。如果错误传递概率为
得出一个结论:错误概率不仅与信道的统计特征有关,也与译码规则有关,不同的译码规则会引起不同的可靠程度。
设通过输入符号集为
若对每一个输出符号
对与一个有
😪 3.2.1 错误概率
当确定了译码规则后,当信道输出符号为
经过译码后的条件正确概率为:
条件错误概率为:
平均错误概率为:
平均错误概率的含义是平均接受到一个符号经过译码后所参数错误概率的大小。我们把平均错误代码译码概率看做是衡量通信可靠性的标准。平均错误译码概率进一步可以表示为:
平均错误概率和信道输出随机变量
😵 3.2.2 译码规则
使平均错误概率
-
最大后延概率译码规则——理想观察者规则
选择译码函数
,使之满足条件它是选择这样一种译码函数,对于每一个输出符号
均译成具有最大后验概率的那个输入符号 ,则信道译码错误概率会最小。但一般来说,后验概率应用起来并不方便,这时我们引入了极大似然译码规则。 -
极大似然译码规则
选择译码函数
,使之满足条件:当信道输入符号为等概分布时,可以写成:
当信道输入符号为等概分布时,应用极大似然译码规则是最方便的。所用的条件概率为信道矩阵中的元素。
-
最大后延概率译码规则和极大似然译码规则是等价的
由最大后验概率译码规则可以很容易地推出极大似然译码规则。根据贝叶斯公式,最大后验概率公式可写为:
当输入为等概分布时,
则有:
😫 3.2.3 平均错误概率
平均错误概率取决于给定信源和给定信道的统计特性,式(10)可进一步表示为:
若输入是等概分布,则:
在输入为等概分布的情况下,译码错误概率
😇 3.3 编码规则
选择最佳译码规则只能使错误概率

最佳译码规则为:
当输入为等概分布时,平均错误概率为:
若采用简单的重复编码,当信源符号为0/1时,重复发送三个0/1,则这种信道称为二元对称信道的三次扩展信道。如果在输入为等概情况下,采用“择多译码”的译码规则,则相应的错误概率为:
这样平均错误概率比不进行信道编码时要降低两个数量级。如果进一步增大重复次数
定义1-11: 设信道的输入消息数维
随机编码的有效性取决于信道的输入消息数
当
当有
等概输入当误码率较低时,基于汉明距离的最小近邻译码规则等价于极大似然译码规则。最大似然准则即将输出序列翻译成与之汉明距离最小的信息,也就是翻译成与之最相似的输入信息:
对于上式,
🌟 3.4 纠错编码的本质
纠错编码的本质是通过在发送端的码字中引入可控的冗余度换取传输可靠性的提高。以分组码为例,它获得纠、检错能力的本质,是由于加入了
这种以注人冗余度来获取可靠性的方法,必然带来信息传输速率的降低。但根据香农第二定理,信息传输速率接近于信道容量且具有任意小错误概率的通信是存在的,即编码效率接近于1且又能使错误概率任意小的信道编码是存在的,这就给编码工作者提出了严峻的课题。人们发现的所谓“好码”,主要是在同样的编码效率下具有更高的纠错或检错能力。
💁 4. 性能评价
:person_frowning: 4.1 纠错编码方法的性能评价
码距与检纠错能力密切相关。用几何关系证明检纠错能力和最小码距之间的关系。

-
检测e个错码
为了检测
个错码,要求最小码距:当最小码距为3,且不发生超过两个错码时,就可以检测两个一下的错码。同时若一种编码的最小码距为
。则其可以检测出 个错码;要求检出 个错码,就需要最小码距 不小于 。 -
纠正t个错码
为了纠正
个错码,要求最小码距:只有这样才能使得两个相邻码组的判决圆不重合,能够实现码的纠正。若此编码中任何两个码组之间的码组之间的码距都不小于5,则只要错码不超过两个,就能够纠正。若错误数目达到3个(或以上),则将错到另一个码组的范围,故无法纠正。一般而言,为纠正
个错误,最小码距不应小于 。 -
纠正t个错码同时检测e个错码
为了能纠正
个错码,同时检测 个错码,要求最小码距:在某些情况下,要求对于出现较频繁但错码数很少的码字,按前向纠错方式工作,以节省时间,提高传输效率;同时又希望对一些错码数较多的码组,在超过该码的纠错能力后能自动按反馈重发的纠错方式工作,以降低系统的总误码率。这种纠错工作方式就是“纠检结合”。
🙉 4.2 纠错编码系统的性能
对于一个编码系统而言,为了减少错码,需要在信息中加入监督码元,序列增长冗余度增加。而要保持信息码元的速率不变,就需要提高系统传输速率,系统带宽增加,但是也会引起噪声功率增大,信噪比下降,接受码元中错码增加。所以综合算来采用纠错编码后得失如何需要进一步分析。
-
误码率性能与带宽的关系
在采用纠错编码后,虽然系统的带宽增大了,但是误码性能还是能得到很大的改善。改善程度自然和所用的编码体制有关。上图给出了某通信系统采用BPSK调制时的误码率曲线,以及采用某种纠错编码后的误码率曲线。由图可以看到,在未采用纠错编码时,若接收信噪比等于7dB,则误码率将约等于
(图中A点);在采用这种纠错编码后,误码率降至约等于 (图中B点)。这样,不要增大发送功率就能降低误码率约一个半数量级。在发射功率受到限制无法增大的场合,采用纠错编码的方法将是降低误码率的首选方案,这样做所付出的代价当然是带宽的增大。 -
功率与带宽的关系
由图还可以看出,若保持误码率在
(图中C点)不变,未采用编码时,约需要 ;在采用这种编码时约需要 (图中D点),可以节省功率2dB,付出的代价仍然是带宽的增大。与纠错方法相比,采用检错方法,可以少增加监督位,从而少增大带宽。但是,延迟时间却增大了,即用时延来换取带宽或功率。对于一些非实时通信系统,这种方法不失为可选方案之一。 -
传输速率与带宽的关系
对于给定的传输系统,其传输速率和
的关系为:式中,
为单边功率谱密度; 为信号码元能量; 为信号功率; 为码元持续时间; 为码元速率。
若希望提高传输速率Rs,由上式可以看出势必使信噪比下降,误码率增大。假设系统原来工作在图中C点,提高速率后由C点升到E点。但是,采用纠错编码后,仍可以将误码率降到原来的水平(D点),这时付出的代价仍是使带宽增大。 -
编码增益
在保持误码率恒定的条件下,采用纠错编码所节省的信噪比
。称为编码增益;通常用分贝表示,如下:式中
。为未编码时的信噪比(dB); 为编码后所需的信噪比(dB)。上图的例子中,编码增益等于2dB。
对纠错编码的基本要求是:检错和纠错能力尽量强;编码效率尽量高;编码规律尽量简单。实际中要根据具体指标要求,保证有一定的纠、检错能力和编码效率,并且易于实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)