有如下说明:
漏检错误对应于G(x)是E(x)的因子的错误。那么在什么条件下,G(x)是E(x)的因子?
首先我们考虑T 中仅有一个比特位改变这种最简单的情况。此时E(x)仅有xk一项,k为整数,G(x)是xk的因子的唯一途径是:G(x)是x的某次方,所以,只要G(x)至少有两项,这就不可能发生,因此CRC就可以检测出任何单位比特的错误。
其次考虑到一个长度k≤ r =G(x)的次数的突发错误,假设T(x)为 , 是被损坏的码字最前和最后的比特位,中间的比特位被随意地损坏,也就是说:
现在,选择G(x),使x不是G(x)的一个因子,因此G(x)和前面部分的 无关,这样如果G(x)是分子的因子,那么它一定是 (xk+…+1)的因子,既然选择了k ≤ r,那么k- 1≤ r,G(x)不可能是一个更低此方多项式的因子,所以得出如下结论:如果x 不是G(x)的因子,那么长度小于等于G(x)次数的突发错误都可以检测出来。再考虑影响奇数个比特位的任意长度的突发错误,因为对每个损坏的比特E(x)都有对应项,所以它包含奇数个项,因此E(1)(奇数个1的异或) 为1。另外,假设x+1是G(x)的因子, 这样就可将G(x)写成G(x)=(x+1)×H(x), 此处H(x)为某个表达式。
假设出现了漏检错误,即意着G(x)是E(x)的一个因子,将G(x)用(x+1)×H(x)替换,结果为E(x)=(x+1)×H(x)×k(x),若令x=1 计算该方程,则因子x+1 使得E(1)为0,这与前面E(1)=1矛盾。
很明显,两者不可能同时发生,如果坚持x+1 是G(x)的一个因子的假设,那么漏检错误损坏的奇数个比特就不可能成立,换句话说,如果x+1是G(x)的一个因子,那么所有损坏奇数个比特位的突发错误都能检测出来。
最后一种情况是长度>G(x)的次数的突发错误,由前所述。
(4-3)
但是,这里k-1≥ r =G(x)的次数,所以G(x)是(xk-1+…+1)的一个因子是可能的,这种情况的机会有多大?首先考虑k-1=r,因为G(x)的次数也是r,所以G(x)是(xk-1+…+1)的一个因子意着G(x)= (xk-1+…+1),现在xk-1和1 之间的相对应的比特位确实损坏了,既然有r- 1 项,损坏比特位的可能组合就有2r-1种,若假设所有组合以相同几率出现,那么组合与G(x)项精确匹配的几率为1/2r-1,也就是说错误漏检率为1-2r-1。
总的来说,若G(x)选择得当,CRC 是非常有效的。
5 循环码的编译码原理
5.1 Matlab简介
MATLAB是 MATrix LABoratory的缩写, 是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。
尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。
MATLAB的意思是“矩阵实验室”,因此它提供了许多创建矢量,矩阵和多文数组的便捷的方式。在MATLAB自己的语言中,一个矢量(vector)指的是一文(1×N或N×1)矩阵,在其他语言中通常被叫做数组(array)。 矩阵(matrix)通常指的是2-文数组,例如m×n数组其中m和n大于或等于1。多文数组通常指的是文数大于2的数组。 Matlab循环码在不同信道中性能仿真研究+流程图(11):http://www.youerw.com/tongxin/lunwen_351.html