开篇:润墨网以专业的文秘视角,为您筛选了一篇改进的二进制循环码盲识别方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:目前已有的循环码盲识别方法在低码率编码条件下效果较好,但在高误码率及高码率条件下不能高效识别,或者只针对循环码中某一子类。为有效解决高误码率以及高码率编码下的循环码盲识别问题,提出一种基于矩阵变换和码重分布的方法,首先对接收序列按估计码长构造矩阵,并对矩阵进行初等变换;然后利用改进的码重分布距离公式对循环码进行盲识别。仿真结果表明该方法在高误码率以及高码率编码时可实现高效的循环码盲识别。
关键词:矩阵变换;循环码;盲识别;码重分布;码长识别
0 引言
循环码是线性分组码中重要的一类码,被广泛应用于各种无线通信中,其中由Bose、Chaudhuri和Hocquenghem共同提出的循环码(简称为BCH码)应用最为广泛。但目前有关循环码盲识别的文献不多,文献[1]提出了综合矩阵分析法得到码长,但计算量较大,且需要知道码字起点;文献[2]利用码字的重量分布距离得到码长,但只适用于低码率编码的盲识别且需要知道码字起点;文献[3]基于欧几里德方法算出二进制BCH码生成多项式,但先验信息码字起点已知;文献[4]是基于码根信息差熵和码根统计的BCH码识别方法,需要统计出各个多项式的生成码根,且只能识别BCH码;文献[5]通过汉明距离得到码长,但需要已知码字起点,且对码字间两两求距离,计算量较大;文献[6]虽然能同时识别出码字起点和码长,但所需数据量极大;文献[7]基于码重信息熵实现线性分组码的盲识别,但也只适用于低码率分组码。因此采用何种方法能在较少数据量下实现高误码率和高码率编码下的盲识别[8]尤为重要。基于此问题,本文在已有循环码盲识别基础上,用一种基于矩阵变换和码重分布的方法来实现循环码的全盲识别,仿真结果表明该方法可以实现无误码和有误码时的循环码的全盲识别。
1 识别模型
2 识别方法
2.1 传统码重分布识别法
传统的码重分布识别法[9]中提到对于(n,k)分组码,如果估计码长不等于真实码长,则码字的信息位与校验位不存在约束关系,可认为0或者1是等概率出现的,则假设此时数据的码重分布是等概率的,可认为不同码重的码字出现的概率为1/(n+1),令Pj为实际重量为i的码组所出现的概率,则定义码重分布距离公式为
D=nn+1∑nj=0Pj-1n+12(2)
则当码重分布距离D最大时的估计码长n为真实码长。
该方法在高误码率时可有效识别低码率的分组码,但是当码率较大时,识别概率几乎为0。本文主要针对线性分组码中的一类――循环码进行识别,为解决循环码高码率时的识别问题,结合矩阵变换,并改进传统码重分布距离识别算法,实现高码率下的循环码盲识别,仿真效果表明本文方法在高码率时能有效实现识别。
2.2 循环码码长识别
本文在利用码重分布识别法前先对接收序列构造矩阵,然后对矩阵进行变换,根据码重分布特性,改进码重分布距离算法,避免了原有码重分布距离识别法在高码率时识别效果不佳的问题,在高码率编码及高误码率下提升了循环码的识别能力。
假设接收序列长度为N,则循环码码长识别步骤如下:
1)设估计码长为n,将接受序列按估计码长放入矩阵A,定义矩阵A的列数为n,行数为m,且行数m=N/n,其中m>4n;
2)从列数i开始(初始化i=1),若元素A(i,i)为0,则将i列与i行右边第一个出现元素为1的列进行交换;
3)若i列右边不存在元素为1的列,则从上到下将i列中第一个出现元素1的行与i行交换;
4)将i行i列右边所有元素不为0的列与i列进行伽罗华域的模2加;
5)列数i加1,返回步骤2)进行,直到总列数n结束,得到化简后的新矩阵B;
6)记矩阵B各列出现的元素为“1”的次数为sum,则各列出现1的概率
pi=sumi/row; i=1,2,…,n(3)
7)令D1为改进后的码重距离,则改进的码重分布距离公式如下:
D1=1n∑ni=1(pi-0.5)2(4)
8)估计码长n加1,返回步骤1)进行,选择D1出现最大值时的估计码长为循环码真实码长。
循环码是线性分组码的重要一种子类,校验位与信息位具有线性相关性。在无误码时,如果估计码长等于真实码长,则接收码字的校验位构成的列与信息位构成的列是线性相关的,通过如上步骤的变换,则某些列必为全0列,且全0列的数目就是校验位长度r,从而可知信息编码码率k/n;但如果估计码长不等于真实码长,码字的信息位和校验位没有相关性,则列数为n的矩阵不会出现全0列。同样在有误码时,生成的码字中有误码,即使估计码长等于真实码长,也会导致部分码字的信息位和校验位没有相关性,进而使矩阵出现全0列的概率降低,但是通过上面矩阵的变换,可以使列中的“1”元素出现的概率降低。
随机序列中0、1出现的次数相近,所以设每列0、1出现的概率为0.5,当估计码长不等于真实码长时,则构成矩阵的每一列中0、1的分布类似随机序列,反之,估计码长等于真实码长时,通过上述的矩阵变换,会使某些列中的0、1元素分布不均匀,且1出现的概率远小于0.5[10-11],所以得到式(4)的码重分布距离公式。
设接收序列构造的矩阵列数为n,行数为m,则文献[1]中的传统综合矩阵分析需要进行n(n-1)/2次列的模2加,同时还要进行m(m-1)/2次行的模2加,而通常构造的矩阵中行数较大,所以效率较低,而改进后的算法只需要进行n(n-1)/2次列的模2加,只有当列变换不满足码长识别中条件时才进行行变换,所以相比传统的综合矩阵分析法,算法效率提高。
2.3 循环码码字起点识别
在分析循环码码长时提到估计码长等于真实码长时,会出现全0列,导致D1出现最大;同理,在估计的码字同步起点等于真实的码字同步起点时,通过矩阵变换会使某些列中“1”元素最少,也即使D1最大。假设码字从b位开始进行识别,具体码字同步起点识别步骤如下:
1)将接收序列从b处按码长n放入矩阵A,矩阵A的行数m=N/n,列数为码长n;
2)对矩阵A进行码长识别中的步骤2)~7);
3)使b加1,返回步骤1)进行,直到遍历起点数等于码长n,取码重距离D1出现最大时的b为真实码字起点。
2.4 循环码生成多项式识别
在识别出码字同步及真实码长后,生成多项式识别就较为简单,由循环码以及有限域知识可知,循环码的码多项式c(x)均是生成多项式g(x)的倍式,因此在知道循环码真实码长和起点后,对接收序列按码长分组,则无误码的码字之间必然有最大公因式[12]。
无误码时,假设得到X组码字,从第一个码字开始与下一个码字运用辗转相除法求两个多项式的最大公因式,再将该最大公因式与下一个码字求最大公因式,直至与最后一个码字求得最大公因式,最后的公因式即为循环码的生成多项式g(x),共需要进行X-1次求多项式的最大公因式运算。
有误码时,按照如下步骤进行生成多项式识别:
1)将码长识别中构造的矩阵A循环左移一位,形成新矩阵A1;
2)利用欧几里德算法分别求矩阵A和A1中同一行的最大公因式(对于二进制的循环码来说,欧几里德算法可以用辗转相除法实现),通过该处理得到一个最大公因式矩阵H;
3)记H中所有能除尽xn-1的多项式集合为g1(x);
4)将g1(x)中多项式分别除矩阵A中所有码多项式,统计所有能除尽的码字概率,概率最大的即为生成多项式g(x)。
3 仿真分析
本文以下进行的仿真,都是利用Matlab软件产生比特序列,仿真模拟信道是二进制对称信道,即信道导致的比特错误不会影响其他比特的传输。
3.1 循环码码长识别验证
对(31,11)和(31,26)二进制循环码分别产生1000组的序列,在误码率pe=4×10-3时分别对传统码重分布距离分析法和本文中方法进行码长识别仿真,仿真结果如图1和图2。
图3中每个点均经过600轮的仿真,通过仿真图能看出不同码长的循环码随着误码率的增大识别概率降低,对于低码率的(31,11)、(23,12)、(15,7)循环码,在误码率为10-2以内均能100%识别出码长,其中(15,7)循环码在误码率为7×10-2时能达到70%的识别概率,(31,11)、(23,12)分别在4×10-2和3×10-2时达到90%和80%的识别概率。对于高码率的(31,26)循环码,在误码率为5×10-3时,识别概率能达到80%以上。
通过该仿真实验可知在码长不是100%识别概率前提下,在相同误码率下,随着码长的增加,识别能力逐渐降低;对于同一码长的循环码,在相同误码率下,随着信息位的增加,识别能力降低。
3.2 循环码码字起点识别验证
码字起点识别验证是建立在识别出码长的基础上,分别对低码率的(15,7)循环码和高码率的(31,26)循环码在误码率为pe=4×10-3时进行仿真,同样产生1000组序列,并假设Matlab产生的循环码序列不是从一个完整码字的起点开始,码字起点识别的目的就是找到第一个完整码字的起点,仿真结果如图4。
从图5 中可知对低码率的(15,7)和(31,11)的循环码,随着误码率的增大,码字起点识别概率下降,但在误码率0.01内,码字起点识别概率能达到80%以上。对于高码率的(31,26)循环码,识别能力有所降低,在误码率为5×10-3以内,识别概率能达到50%以上。
通过仿真实验可知,在码字起点不是100%识别概率前提下,在相同误码率下,随着码长的增大,码字起点识别能力降低;在相同误码率下,对同一码长的循环码,随着信息位的增加,码字起点识别能力降低。
3.3 生成多项式识别验证
以(31,26)二进制循环码为例,由Matlab产生1000组序列,误码率pe=0.005,则通过2.4节所述的处理后,得到的所有的g1(x)的八进制数表示以及能除尽码组总数如表1。
从表1中可以看出在对应的八进制数为45和450时的概率最大,八进制数为45和450时候分别对应的二进制数为100101,100101000,又二进制循环码的生成多项式g(x)常数项必须为1,则将100101000循环右移3位后得到100101,与八进制数45时候相同,所以(31,26)的生成多项式系数为100101,也即生成多项式g(x)=x5+x2+1。
4 结语
本文在运用码重分布识别前先对生成序列作矩阵变换的处理,再利用循环码码重分布和随机序列码重分布理论,改进了传统码重识别方法,解决了传统码重分析法在高误码率及高码率下不能有效识别的问题。通过仿真实验表明,该方法在有误码时能有效识别循环码,对于本文中仿真的低码率的(15,7),(23,12),(31,11)线性循环码在误码率0.03内码长识别概率能达到70%以上,高码率的(31,26)在误码率为0.005以内码长识别概率也能达到90%左右。此外,本文基于矩阵变换和改进的码重分布的识别码字起点和码长的方法可推广到线性分组码中。