循环码是一种满足循环特性的线性分组码,线性分组码对码的选择做出了线性的约束,而循环码则是在线性约束的基础之上增加了满足循环性的约束条件,从而循环码是线性分组码的子类。
1.2 线性分组码的编码
线性分组码的编码过程非常容易,只需根据生成矩阵G进行编码,假设信息组M=( , ,…, , ),码组C=( , ,… , ),那么M、C与G之间的关系则为
C=MG
对于系统码,则有
C=[M MP]
2.3线性分组码的译码
错误图样是指编码输出的码字在信道上传输时有可能会产生一定的码元传输的错误,而这些码元的传输错误被称为错误图样。若设C为假设发送码字,E为信道发生的错误图样,那么则接收码字R=C+E。在前向纠错方式中,译码器的作用就是根据接收码字R来估计错误图样E,从而得到对发送码字C的估计。
因为生成矩阵G的行向量是线性且独立的,所以生成矩阵行的线性组合能够用于生成c中的码字。生成矩阵将是秩为k的k*n阶矩阵,生成矩阵完整地描述了整个编码的过程,因为有了生成矩阵G,就可以很容易地确定编码器的结构。
2.循环码
2.1 循环码的基本概念
循环码具有完整的代数结构的特点,这种码的代数构造完全建立在有限区域的基础上,具备很多有用的特点,因为循环码的代数结构和线性反馈移位寄存器的数学结构不经相同,因此它们的编码译码都可以方便的地运用移位寄存器来实现,循环码是当前研究的最成熟的一类码,目前很多有实用价值的纠错码都属于循环码的范畴。
循环码是一种满足循环特性的线性分组码,线性分组码对码的选择做出了线性的约束,而循环码则是在线性约束的基础之上增加了满足循环性的约束条件,从而循环码是线性分组码的子类。
2.2 循环码的编码
循环码可以根据校验多项式h(x)或者生成多项式g(x)通过多项式乘法或除法来实现编码。当然,也可以采用线性分组码的校验矩阵H或者生成矩阵G通过矩阵运算实现。编码器有n-k级编码器和k级编码器。
2.3 循环码的译码
循环码的接收端译码包括检错和纠错。循环码只需要检错的译码原理非常简单。因为循环码任一许用码的多项式c(x)都能被生成多项式g(x)整除,所以接收端只需要把接收到的码多项式用生成多项式g(x)去除。若余式为零,则被生成多项式整除,说明传输过程中并未发生译码错误;若余式不是零,则并没有被生成多项式所整除,就说明了传输过程中发生错误,从而产生了误码。因此可以用余式是否为0来判断传输过程中有无差错,产生误码。需要另外说明的是,当一许用码多项式错成另一许用码多项式时,它也能被生成多项式g(x)所整除,这时的误码就不能被检出了,这被称为不可检错误。
在循环码的接收端如果需要纠错,则采用的译码方法要比仅仅检错时要复杂许多。为了能做到纠错,要求每个可纠正的错误图样必须与一个特定的余式有一一对应的关系,这样才可能从特定的余式中唯一地确定其错误图样,从而做到纠正错码。正如和其他线性分组码一样,循环码的纠错译码也同样可以分为三步:
(1) 用接收的码来计算伴随式(校正子)多项式。
对于循环码而言,伴随式多项式就是用在接收端接收到的码多项式除以生成多项式从而得到的余式。
(2) 由伴随式多项式来确定错误图样e(x)。
(3) 将错误图样e(x)与接收到的码多项式相加之和,即可纠正传输误码恢复原码组。
一般来说,纠错译码器的复杂程度主要取决于译码过程的第2步。对于纠正单个错误的编译码还算容易,但如果要纠正多个错误,就会十分复杂。 Matlab卷积码的性能仿真研究+程序(2):http://www.751com.cn/zidonghua/lunwen_31998.html