CN103401567B - 一种二进制本原bch码参数盲识别方法 - Google Patents
一种二进制本原bch码参数盲识别方法 Download PDFInfo
- Publication number
- CN103401567B CN103401567B CN201310343717.1A CN201310343717A CN103401567B CN 103401567 B CN103401567 B CN 103401567B CN 201310343717 A CN201310343717 A CN 201310343717A CN 103401567 B CN103401567 B CN 103401567B
- Authority
- CN
- China
- Prior art keywords
- code
- shift
- code length
- polynomial
- common factor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
一种二进制本原BCH码盲识别方法,属信道编码盲识别技术领域,采用线性矩阵分析法或比特相关性算法识别马场,再识别起点,线性矩阵分析法可在误码率较高时正确识别码长小于等于15的BCH码,比特相关性算法可快速识别出码率不太高的码字码长。码根特性算法通过统计码根的分布判断码长是否正确,可以识别出高码率的码字码长。识别起点时采用公因式算法。公因式算法的依据是无误码情况下所有码字的公因式是生成多项式或生成多项式的倍数。识别生成多项式时采用码根算法,最后遍历本原多项式译码,根据误码率得到本原多项式。本方法运算速度快,正确率高,容错性好,适用于所有二进制本原BCH码。
Description
技术领域
本发明涉及一种二进制本原BCH码参数的盲识别方法,属于信道编码盲识别技术领域。
背景技术
差错编码技术的应用使得数据传输变得更加可靠,已经成为现代通信系统中必不可缺的一部分。在合作通信中,为保证传输数据的可靠性,编码参数会随信道的改变而变化。如果可以根据接收到的信息识别出编码的参数,那么通信系统将更加灵活。在非合作通信中,接收方需要根据截获的数据识别编码参数,从而获得信息。因此编码参数盲识别技术的研究显得尤为重要。
BCH码是一种纠错性能较为理想的纠错码,可以纠正多个随机差错,并且编码简单,应用比较广泛。目前BCH码的识别方法有三种:
一、根据码字公因式特性循环识别码长和起点,最后识别生成多项式,这种算法对于码长较长的BCH码效果很差,且需要对码长和起点进行循环,计算量较大;(见“BCH码生成多项式快速识别方法”,作者:吕喜在,黄芝平,苏绍璟,【西安电子科技大学学报】(自然科学版),2011年12月,第28卷第6期)
二、根据码字计算码根的分布,进而识别码长、起点和生成多项式,该算法需要对码长和起点进行遍历,计算量较大。(见“基于码根信息差熵和码根统计的BCH码识别方法”,作者:杨晓静,闻年成,【探测与控制学报】,2010年6月,第32卷第3期)
三、基于BCH译码的BCH参数盲识别方法,该方法需要对码长、起点、本原多项式、最小生成多项式进行循环,计算量较大,当码长较大或纠错能力较大时,耗时过长。(见专利申请号:201210337369.2,专利名:“一种基于BCH译码的BCH参数盲识别方法”,发明人:周攀,熊波,李多烨,廖红舒,甘露)
发明内容
为克服现有技术存在的缺陷与不足,本发明提出了一种二进制本原BCH码参数盲识别方法,以提供一种容误码、计算量小、正确率高、适用性广泛的BCH码编码参数盲识别方法。
本发明为解决上述技术问题所采用的技术方案如下:
一种二进制本原BCH码参数盲识别方法,包括码长识别、起点识别、生成多项式识别和本原多项式识别,其具体步骤如下:
〈1〉码长识别
1)初始化参数,可能的起点:shiftg=-1,取值范围为[-1,∞],shiftg的类型gchoice=-1,取值范围为{-1,1},识别的码长:ng=-1,取值范围为[-1,∞],从本原多项式文件中读入本原多项式表,接收到的码字序列为R,长度为Rlength;
2)用线性矩阵分析法识别码长是否小于等于15,定义q为3~50内的循环变量,将接收到的数据按行写入50×q的矩阵M中,如果M的秩不等于q,则保留q,计算保留的q的最大公因式作为识别的码长ng,如果没有保留数即q在3~50的循环中保留的满足上述条件的q,则没有识别出码长;
3)判断ng是否满足下列两个条件:ng+1是2的整数幂;ng>0,如果ng不满足这两个条件,则进入步骤4),如果ng满足这两个条件,则识别到的码长就是ng,码长识别过程结束;
4)若ng+1不是2的整数幂并且ng≤0,码长识别如下:
(a)定义阶数m=5,偏移量shift=0,数据序列指针R0=R;
(b)设码长n=2m-1,R=R0+shift,使用比特相关性算法判断R中数据的码长是否是n:
i.定义矩阵XN×n,矩阵函数为XN×n,将接收到的码字序列R的前N*n比特按行写入矩阵XN×n,然后将矩阵XN×n转置得到Xtn×N,Xtn×N的列数集合为N={0,1,…,n-1},Xtn×N中信息集的列数集合为I1×n,Xtn×N冗余列数集合为J1×(N-n),计算得到的码字个数num=0,码重分布向量为W1×(N+1),将其初始化为全0;
ii.寻找集合I1×n,其中符号∪、∩、分别表示集合相加、取交集、空集合,I、J是两个集合,集合元素是矩阵Xtn×N的列数,Xt(I)表示I1×n中的元素对应的列构成的方阵,Xt(J)表示J1×(N-n)中元素对应的列构成的矩阵,如果Xt(I)能够通过行化简得到单位阵,则I1×n为正确的信息集,记录下Xt(I)的行化简步骤,对Xt(J)实施相同的行化简步骤,执行步骤iii;如果找不到I1×n使得Xt(I)能够通过行化简得到单位阵,则认为n为接收到的码字序列的码长,ng=n,gchoice=1,shiftg=shift;
iii.将{0,1,…,n-1}随机平分成两个向量Z1(1×k1),Z2(1×k2),k1+k2=n,k1、k2分别是向量Z1,Z2的列数,Z1中元素对应的行组成的矩阵为Λ1,Z2中元素对应的行组成的矩阵为Λ2,定义sigma=log(n)/log(2),随机选取sigma个J1×(N-n)中的元素构成向量L,选取Λ1中的任意2行,共有种取法,对于遍取的所有的Λ1中的任意2行,将其在二元域上相加,得到向量Λ1|L,Λ1|(J\L),其中Λ1|L表示L中的元素对应的Λ1的列构成的矩阵,J\L表示J-L,L∈J,同样计算Λ2|L,Λ2|(J\L);
iv.比较所有的Λ1|L和Λ2|L,如果Λ1|L=Λ2|L,则Λ1+Λ2的码重为weight=weight((Λ1+Λ2)|(J\L))+4,W(weight)=W(weight)+1,num=num+1;其中:(Λ1+Λ2)是将Λ1、Λ2两个向量相加,(Λ1+Λ2)|(J\L)表示J\L中元素对应的列构成的向量、weight((Λ1+Λ2)|(J\L))表示(Λ1+Λ2)|(J\L)向量中1的个数、W(weight)表示重量为weight的向量Λ1+Λ2出现的次数;
v.如果num≥200,转入下一步,如果num<200,则转入步骤iii;
vi.计算W的平方差为hsigma,如果hsigma>30,则认为n是接收到的码字序列的码长,ng=n,shiftg=shift,gchoice=1;
(c)判断n是否为二进制本原BCH码的码长,如果n是接收到的码字序列的码长,则跳出循环,ng=n,如果判断n不是接收到的码字序列的码长且shift<n,则shift=shift+n/m,重新执行步骤(b);如果判断n不是接收到的码字序列的码长且shift≥n,则执行步骤(d);
(d)使用码根算法判断码长是否是接收到的码字序列的码长:
1〉根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表,定义偏移量shift=0;
2〉定义码字序列指针R=R0+shift,对于一个长度为n个二进制序列(c0,c1,c2,…,cn-2,cn-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+…+cn-2xn-2+cn-1xn-1中的各项的系数,将代入到码字多项式c0+c1x+c2x2+…+cn-2xn-2+cn-1xn-1中,其中符号表示任意、∈表示属于、及式表示对于任意属于集合[1,n-1]的元素x,xl可以通过步骤1〉中的本原关系表找到,其中符号l表示幂次,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*n个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤3〉,统计码根出现的概率与最大值相差小于0.1的码根数目,如果该数目是m的整数倍,则判断该码长正确,识别码长结束,shiftg=shift,gchoice=1;如果该数目不是m的整数倍,则进入步骤3〉;
3〉shift=shift+1,如果shift<n,则执行步骤2〉,如果shift≥n,n不是接收到的码字序列的码长;
(e)如果码根特性算法判断n是接收到的码字序列的码长,则识别得到的码长为n,ng=n,否则m=m+1,shift=0,执行步骤(b);
〈2〉起点识别
a〉识别的码长为ng,定义起点偏移量为start,如果gchoice==1,则R=R0+shiftg-ng/m,shiftgmost=3*ng/m,
Rlength=Rlength-(shiftg-ng/m),否则R=R0,shiftgmost=n;
b〉使用最大公因式算法进行起点识别:
①定义偏移量shift=0,定义一个ng×ng的矩阵M,分配相应空间作为缓冲区1和缓冲区2,定义num1、num2作为循环变量,统计最小值:shiftmin=200,统计最大值shiftmax=0,统计最大值对应的偏移量shiftg1=0,统计最小值对应的偏移量shiftg2=0,公因式个数最大值的统计最大值对应的公因式总数sum1=0,公因式个数最大值的统计最小值对应的公因式总数sum2=0,公因式个数最大值为max,公因式个数总数为sum;
②定义数据序列指针R1=R+shift,码字序号num1=0,码字循环次数num2=0;将R1前200*ng个比特分割成200个码字;
③将第num1个码字循环左移num2次,放入M的第num2行,num2=num2+1.如果num2==ng,则num2=0,num1=num1+1,使用欧几里德算法计算M中所有行的公因式,将公因式及其阶数放入缓冲区1中,如果num1==200,则执行步骤④,如果num1≠200执行步骤③;
④统计公因式,首先将公因式按照阶数由低到高排列,相同的公因式合并,次数相应增加,如果高次公因式可以被低次多项式整除,则删除高次公因式,低次公因式次数增加,将统计后的结果放入缓冲区2中,max为公因式出现的次数最大值,sum为公因式次数的和;
⑤如果max大于shiftmax,则shiftg1=shift,shiftmax=shift,sum1=sum,如果max小于shiftmin,则shiftg2=shift,shiftmin=shift,sum2=sum,shift=shift+1,如果shift<ng,则执行步骤②,否则执行步骤⑥;
⑥如果sum1>sum2,则起点偏移量为start=shiftg1,否则为start=shiftg2,
c〉如果gchoice==1,则start=start+shiftg-ng/m,起点偏移量为start,起点识别完成;
〈3〉生成多项式识别
a)起点偏移量为start,码长ng,阶数m=log2(ng+1),偏移量为shift=start,状态变量flag=0,码字序列指针R=R0+shift;
b)根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表;
c)对于一个长度为ng个二进制序列(c0,c1,c2,…,cng-2,cng-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+…+cng-2xng-2+cng-1xng-1中的各项的系数,将代入到码字多项式中,xl可以通过b)中本原关系表找到,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*ng个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤d),统计码根出现的概率,统计码根概率与概率最大值相差小于0.1的码根数目rootnum,信息位长度y=n-rootnum,如果此时起点偏移量和码长都是接收到的码字序列的真实起点和码长,那么BCH码字阶数m、信息位长度k、纠错能力t之间的关系表中必然存在一个纠错能力t使得n=2m-1,y=k,如果没有t满足条件,则进入步骤d),否则进入步骤e);
d)如果flag=0,则定义m=2,shift=0,flag=1,R=R0+shift,n=2m-1,执行步骤b),如果flag=1且shift<n,则shift=shift+1,如果flag=1且shift=n,则m=m+1,shift=0,R=R0+shift,执行步骤c);
e)接收到的码字序列的真实起点偏移量start=shift,根据最大的前rootnum个码根得到一个由rootnum个一元一次多项式,将这些多项式相乘、化简,从而得到生成多项式G,G的阶数degree=rootnum;
〈4〉本原多项式识别
a.定义码字序列R=R0+start,m=log(ng)/log(2),根据二进制本原BCH码阶数m、纠错能力t和信息位长度k之间的对应关系得到信息位长度k,阶数m共有prime_max个本原多项式,本原多项式序数primenum=0,误比特数Errorbits=0,最小误比特数Errormin=1e20,无法纠错的次数Error=0,最可能的本原多项式的序数posprimenum=0,译码再编码后对比错误最小个数ErrorRmin=1e20;
b.根据阶数m的第primenum个本原多项式,计算伽罗华域,对接收到的码字序列R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数;
c.根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
d.无法纠错的次数Error=Errorno*k+Errorbits,如果Error<Errormin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;如果Error=Errormin且ErrorR<ErrorRmin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;
e.本原多项式序数primenum=primenum+1,如果primenum=prime_max,则执行步骤f,否则执行b;
f.根据阶数m的第primenum个本原多项式,计算伽罗华域,对R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数,Errorbits是译码纠正的错误个数,根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
g.第primenum个本原多项式就是接收到的码字序列使用的本原多项式,置信度为:1-ErrorR/2000/ng。
上述GF(p)表示一个域,通俗地讲是一组元素的集合,p被称为是域的阶,GF(2)是二元域,GF(2m)是二元扩域。
本发明有益效果:计算量小,运算速度快,正确率高,适用于所有的BCH码,容错性好,尤其适用于非合作通信、智能通信、无线电通信领域的BCH码参数盲识别。
具体实施方式
下面结合实施例对本发明做进一步说明,但不限于此。
实施例:
一种二进制本原BCH码参数盲识别方法,包括码长识别、起点识别、生成多项式识别和本原多项式识别,其具体步骤如下:
〈1〉码长识别
1)初始化参数,可能的起点:shiftg=-1,取值范围为[-1,∞],shiftg的类型gchoice=-1,取值范围为{-1,1},识别的码长:ng=-1,取值范围为[-1,∞],从本原多项式文件中读入本原多项式表,接收到的码字序列为R,长度为Rlength;
2)用线性矩阵分析法识别码长是否小于等于15,定义q为3~50内的循环变量,将接收到的数据按行写入50×q的矩阵M中,如果M的秩不等于q,则保留q,计算保留的q的最大公因式作为识别的码长ng,如果没有保留数即q在3~50的循环中保留的满足上述条件的q,则没有识别出码长;
3)判断ng是否满足下列两个条件:ng+1是2的整数幂;ng>0,如果ng不满足这两个条件,则进入步骤4),如果ng满足这两个条件,则识别到的码长就是ng,码长识别过程结束;
4)若ng+1不是2的整数幂并且ng≤0,码长识别如下:
(a)定义阶数m=5,偏移量shift=0,数据序列指针R0=R;
(b)设码长n=2m-1,R=R0+shift,使用比特相关性算法判断R中数据的码长是否是n:
i.定义矩阵XN×n,矩阵函数为XN×n,将接收到的码字序列R的前N*n比特按行写入矩阵XN×n,然后将矩阵XN×n转置得到Xtn×N,Xtn×N的列数集合为N={0,1,…,n-1},Xtn×N中信息集的列数集合为I1×n,Xtn×N冗余列数集合为J1×(N-n),计算得到的码字个数num=0,码重分布向量为W1×(N+1),将其初始化为全0;
ii.寻找集合I1×n,其中符号∪、∩、分别表示集合相加、取交集、空集合,I、J是两个集合,集合元素是矩阵Xtn×N的列数,Xt(I)表示I1×n中的元素对应的列构成的方阵,Xt(J)表示J1×(N-n)中元素对应的列构成的矩阵,如果Xt(I)能够通过行化简得到单位阵,则I1×n为正确的信息集,记录下Xt(I)的行化简步骤,对Xt(J)实施相同的行化简步骤,执行步骤iii;如果找不到I1×n使得Xt(I)能够通过行化简得到单位阵,则认为n为接收到的码字序列的码长,ng=n,gchoice=1,shiftg=shift;
iii.将{0,1,…,n-1}随机平分成两个向量Z1(1×k1),Z2(1×k2),k1+k2=n,k1、k2分别是向量Z1,Z2的列数,Z1中元素对应的行组成的矩阵为Λ1,Z2中元素对应的行组成的矩阵为Λ2,定义sigma=log(n)/log(2),随机选取sigma个J1×(N-n)中的元素构成向量L,选取Λ1中的任意2行,共有种取法,对于遍取的所有的Λ1中的任意2行,将其在二元域上相加,得到向量Λ1|L,Λ1|(J\L),其中Λ1|L表示L中的元素对应的Λ1的列构成的矩阵,J\L表示J-L,L∈J,同样计算Λ2|L,Λ2|(J\L);
iv.比较所有的Λ1|L和Λ2|L,如果Λ1|L=Λ2|L,则Λ1+Λ2的码重为weight=weight((Λ1+Λ2)|(J\L))+4,W(weight)=W(weight)+1,num=num+1;其中:(Λ1+Λ2)是将Λ1、Λ2两个向量相加,(Λ1+Λ2)|(J\L)表示J\L中元素对应的列构成的向量、weight((Λ1+Λ2)|(J\L))表示(Λ1+Λ2)|(J\L)向量中1的个数、W(weight)表示重量为weight的向量Λ1+Λ2出现的次数;
v.如果num≥200,转入下一步,如果num<200,则转入步骤iii;
vi.计算W的平方差为hsigma,如果hsigma>30,则认为n是接收到的码字序列的码长,ng=n,shiftg=shift,gchoice=1;
(c)判断n是否为二进制本原BCH码的码长,如果n是接收到的码字序列的码长,则跳出循环,ng=n,如果判断n不是接收到的码字序列的码长且shift<n,则shift=shift+n/m,重新执行步骤(b);如果判断n不是接收到的码字序列的码长且shift≥n,则执行步骤(d);
(d)使用码根算法判断码长是否是接收到的码字序列的码长:
1〉根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表,定义偏移量shift=0;
2〉定义码字序列指针R=R0+shift,对于一个长度为n个二进制序列(c0,c1,c2,…,cn-2,cn-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+…+cn-2xn-2+cn-1xn-1中的各项的系数,将代入到码字多项式c0+c1x+c2x2+…+cn-2xn-2+cn-1xn-1中,其中符号表示任意、∈表示属于、及式表示对于任意属于集合[1,n-1]的元素x,xl可以通过步骤1〉中的本原关系表找到,其中符号l表示幂次,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*n个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤3〉,统计码根出现的概率与最大值相差小于0.1的码根数目,如果该数目是m的整数倍,则判断该码长正确,识别码长结束,shiftg=shift,gchoice=1;如果该数目不是m的整数倍,则进入步骤3〉;
3〉shift=shift+1,如果shift<n,则执行步骤2〉,如果shift≥n,n不是接收到的码字序列的码长;
(e)如果码根特性算法判断n是接收到的码字序列的码长,则识别得到的码长为n,ng=n,否则m=m+1,shift=0,执行步骤(b);
〈2〉起点识别
a〉识别的码长为ng,定义起点偏移量为start,如果gchoice==1,则R=R0+shiftg-ng/m,shiftgmost=3*ng/m,
Rlength=Rlength-(shiftg-ng/m),否则R=R0,shiftgmost=n;
b〉使用最大公因式算法进行起点识别:
①定义偏移量shift=0,定义一个ng×ng的矩阵M,分配相应空间作为缓冲区1和缓冲区2,定义num1、num2作为循环变量,统计最小值:shiftmin=200,统计最大值shiftmax=0,统计最大值对应的偏移量shiftg1=0,统计最小值对应的偏移量shiftg2=0,公因式个数最大值的统计最大值对应的公因式总数sum1=0,公因式个数最大值的统计最小值对应的公因式总数sum2=0,公因式个数最大值为max,公因式个数总数为sum;
②定义数据序列指针R1=R+shift,码字序号num1=0,码字循环次数num2=0;将R1前200*ng个比特分割成200个码字;
③将第num1个码字循环左移num2次,放入M的第num2行,num2=num2+1.如果num2==ng,则num2=0,num1=num1+1,使用欧几里德算法计算M中所有行的公因式,将公因式及其阶数放入缓冲区1中,如果num1==200,则执行步骤④,如果num1≠200执行步骤③;
④统计公因式,首先将公因式按照阶数由低到高排列,相同的公因式合并,次数相应增加,如果高次公因式可以被低次多项式整除,则删除高次公因式,低次公因式次数增加,将统计后的结果放入缓冲区2中,max为公因式出现的次数最大值,sum为公因式次数的和;
⑤如果max大于shiftmax,则shiftg1=shift,shiftmax=shift,sum1=sum,如果max小于shiftmin,则shiftg2=shift,shiftmin=shift,sum2=sum,shift=shift+1,如果shift<ng,则执行步骤②,否则执行步骤⑥;
⑥如果sum1>sum2,则起点偏移量为start=shiftg1,否则为start=shiftg2,
c〉如果gchoice==1,则start=start+shiftg-ng/m,起点偏移量为start,起点识别完成;
〈3〉生成多项式识别
a)起点偏移量为start,码长ng,阶数m=log2(ng+1),偏移量为shift=start,状态变量flag=0,码字序列指针R=R0+shift;
b)根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表;
c)对于一个长度为ng个二进制序列(c0,c1,c2,…,cng-2,cng-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+…+cng-2xng-2+cng-1xng-1中的各项的系数,将代入到码字多项式中,xl可以通过b)中本原关系表找到,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*ng个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤d),统计码根出现的概率,统计码根概率与概率最大值相差小于0.1的码根数目rootnum,信息位长度y=n-rootnum,如果此时起点偏移量和码长都是接收到的码字序列的真实起点和码长,那么BCH码字阶数m、信息位长度k、纠错能力t之间的关系表中必然存在一个纠错能力t使得n=2m-1,y=k,如果没有t满足条件,则进入步骤d),否则进入步骤e);
d)如果flag=0,则定义m=2,shift=0,flag=1,R=R0+shift,n=2m-1,执行步骤b),如果flag=1且shift<n,则shift=shift+1,如果flag=1且shift=n,则m=m+1,shift=0,R=R0+shift,执行步骤c);
e)接收到的码字序列的真实起点偏移量start=shift,根据最大的前rootnum个码根得到一个由rootnum个一元一次多项式,将这些多项式相乘、化简,从而得到生成多项式G,G的阶数degree=rootnum;
〈4〉本原多项式识别
a.定义码字序列R=R0+start,m=log(ng)/log(2),根据二进制本原BCH码阶数m、纠错能力t和信息位长度k之间的对应关系得到信息位长度k,阶数m共有prime_max个本原多项式,本原多项式序数primenum=0,误比特数Errorbits=0,最小误比特数Errormin=1e20,无法纠错的次数Error=0,最可能的本原多项式的序数posprimenum=0,译码再编码后对比错误最小个数ErrorRmin=1e20;
b.根据阶数m的第primenum个本原多项式,计算伽罗华域,对接收到的码字序列R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数;
c.根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
d.无法纠错的次数Error=Errorno*k+Errorbits,如果Error<Errormin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;如果Error=Errormin且ErrorR<ErrorRmin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;
e.本原多项式序数primenum=primenum+1,如果primenum=prime_max,则执行步骤f,否则执行b;
f.根据阶数m的第primenum个本原多项式,计算伽罗华域,对R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数,Errorbits是译码纠正的错误个数,根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
g.第primenum个本原多项式就是接收到的码字序列使用的本原多项式,置信度为:1-ErrorR/2000/ng。
Claims (1)
1.一种二进制本原BCH码参数盲识别方法,包括码长识别、起点识别、生成多项式识别和本原多项式识别,其具体步骤如下:
〈1〉码长识别
1)初始化参数,可能的起点:shiftg=-1,取值范围为[-1,∞],shiftg的类型gchoice=-1,取值范围为{-1,1},识别的码长:ng=-1,取值范围为[-1,∞],从本原多项式文件中读入本原多项式表,接收到的码字序列为R,长度为Rlength;
2)用线性矩阵分析法识别码长是否小于等于15,定义q为3~50内的循环变量,将接收到的数据按行写入50×q的矩阵M中,如果M的秩不等于q,则保留q,计算保留的q的最大公因式作为识别的码长ng,如果没有保留数即q在3~50的循环中保留的满足条件的q,则没有识别出码长;
3)判断ng是否满足下列两个条件:ng+1是2的整数幂;ng>0,如果ng不满足这两个条件,则进入步骤4),如果ng满足这两个条件,则识别到的码长就是ng,码长识别过程结束;
4)若ng+1不是2的整数幂并且ng≤0,码长识别如下:
(a)定义阶数m=5,偏移量shift=0,数据序列指针R0=R;
(b)设码长n=2m-1,R=R0+shift,使用比特相关性算法判断R中数据的码长是否是n:
i.定义矩阵XN×n,矩阵函数为XN×n,将接收到的码字序列R的前N*n比特按行写入矩阵XN×n,然后将矩阵XN×n转置得到Xtn×N,Xtn×N的列数集合为N={0,1,L,n-1},Xtn×N中信息集的列数集合为I1×n,Xtn×N冗余列数集合为J1×(N-n),计算得到的码字个数num=0,码重分布向量为W1×(N+1),将其初始化为全0;
ii.寻找集合I1×n,I∪J=N,其中符号∪、∩、分别表示集合相加、取交集、空集合,I、J是两个集合,集合元素是矩阵Xtn×N的列数,Xt(I)表示I1×n中的元素对应的列构成的方阵,Xt(J)表示J1×(N-n)中元素对应的列构成的矩阵,如果Xt(I)能够通过行化简得到单位阵,则I1×n为正确的信息集,记录下Xt(I)的行化简步骤,对Xt(J)实施相同的行化简步骤,执行步骤iii;如果找不到I1×n使得Xt(I)能够通过行化简得到单位阵,则认为n为接收到的码字序列的码长,ng=n,gchoice=1,shiftg=shift;
iii.将{0,1,L,n-1}随机平分成两个向量Z1(1×k1),Z2(1×k2),k1+k2=n,k1、k2分别是向量Z1,Z2的列数,Z1中元素对应的行组成的矩阵为Λ1,Z2中元素对应的行组成的矩阵为Λ2,定义sigma=log(n)/log(2),随机选取sigma个J1×(N-n)中的元素构成向量L,选取Λ1中的任意2行,共有种取法,对于遍取的所有的Λ1中的任意2行,将其在二元域上相加,得到向量Λ1|L,Λ1|(J\L),其中Λ1|L表示L中的元素对应的Λ1的列构成的矩阵,J\L表示J-L,L∈J,同样计算Λ2|L,Λ2|(J\L);
iv.比较所有的Λ1|L和Λ2|L,如果Λ1|L=Λ2|L,则Λ1+Λ2的码重为weight=weight((Λ1+Λ2)|(J\L))+4,W(weight)=W(weight)+1,num=num+1;其中:(Λ1+Λ2)是将Λ1、Λ2两个向量相加,(Λ1+Λ2)|(J\L)表示J\L中元素对应的列构成的向量、weight((Λ1+Λ2)|(J\L))表示(Λ1+Λ2)|(J\L)向量中1的个数、W(weight)表示重量为weight的向量Λ1+Λ2出现的次数;
v.如果num≥200,转入下一步,如果num<200,则转入步骤iii;
vi.计算W的平方差为hsigma,如果hsigma>30,则认为n是接收到的码字序列的码长,ng=n,shiftg=shift,gchoice=1;
(c)判断n是否为二进制本原BCH码的码长,如果n是接收到的码字序列的码长,则跳出循环,ng=n,如果判断n不是接收到的码字序列的码长且shift<n,则shift=shift+n/m,重新执行步骤(b);如果判断n不是接收到的码字序列的码长且shift≥n,则执行步骤(d);
(d)使用码根算法判断码长是否是接收到的码字序列的码长:
1〉根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表,定义偏移量shift=0;
2〉定义码字序列指针R=R0+shift,对于一个长度为n个二进制序列(c0,c1,c2,L,cn-2,cn-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+L+cn-2xn-2+cn-1xn-1中的各项的系数,将代入到码字多项式c0+c1x+c2x2+L+cn-2xn-2+cn-1xn-1中,其中符号表示任意、∈表示属于、及式表示对于任意属于集合[1,n-1]的元素x,xl可以通过步骤1〉中的本原关系表找到,其中符号l表示幂次,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*n个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤3〉,统计码根出现的概率与最大值相差小于0.1的码根数目,如果该数目是m的整数倍,则判断该码长正确,识别码长结束,shiftg=shift,gchoice=1;如果该数目不是m的整数倍,则进入步骤3〉;
3〉shift=shift+1,如果shift<n,则执行步骤2〉,如果shift≥n,n不是接收到的码字序列的码长;
(e)如果码根特性算法判断n是接收到的码字序列的码长,则识别得到的码长为n,ng=n,否则m=m+1,shift=0,执行步骤(b);
〈2〉起点识别
a〉识别的码长为ng,定义起点偏移量为start,如果gchoice==1,则
R=R0+shiftg-ng/m,shiftgmost=3*ng/m,
Rlength=Rlength-(shiftg-ng/m),否则R=R0,shiftgmost=n;
b〉使用最大公因式算法进行起点识别:
①定义偏移量shift=0,定义一个ng×ng的矩阵M,分配相应空间作为缓冲区1和缓冲区2,定义num1、num2作为循环变量,统计最小值:shiftmin=200,统计最大值shiftmax=0,统计最大值对应的偏移量shiftg1=0,统计最小值对应的偏移量shiftg2=0,公因式个数最大值的统计最大值对应的公因式总数sum1=0,公因式个数最大值的统计最小值对应的公因式总数sum2=0,公因式个数最大值为max,公因式个数总数为sum;
②定义数据序列指针R1=R+shift,码字序号num1=0,码字循环次数num2=0;将R1前200*ng个比特分割成200个码字;
③将第num1个码字循环左移num2次,放入M的第num2行,num2=num2+1.如果num2==ng,则num2=0,num1=num1+1,使用欧几里德算法计算M中所有行的公因式,将公因式及其阶数放入缓冲区1中,如果num1==200,则执行步骤④,如果num1≠200执行步骤③;
④统计公因式,首先将公因式按照阶数由低到高排列,相同的公因式合并,次数相应增加,如果高次公因式可以被低次多项式整除,则删除高次公因式,低次公因式次数增加,将统计后的结果放入缓冲区2中,max为公因式出现的次数最大值,sum为公因式次数的和;
⑤如果max大于shiftmax,则shiftg1=shift,shiftmax=shift,sum1=sum,如果max小于shiftmin,则shiftg2=shift,shiftmin=shift,sum2=sum,shift=shift+1,如果shift<ng,则执行步骤②,否则执行步骤⑥;
⑥如果sum1>sum2,则起点偏移量为start=shiftg1,否则为start=shiftg2,
c〉如果gchoice==1,则start=start+shiftg-ng/m,起点偏移量为start,起点识别完成;
〈3〉生成多项式识别
a)起点偏移量为start,码长ng,阶数m=log2(ng+1),偏移量为shift=start,状态变量flag=0,码字序列指针R=R0+shift;
b)根据阶数m和本原多项式表中m对应的第1个本原多项式,计算本原关系表;
c)对于一个长度为ng个二进制序列(c0,c1,c2,L,cng-2,cng-1),可以将其每一项看作是一个码字多项式c0+c1x+c2x2+L+cng-2xng-2+cng-1xng-1中的各项的系数,将代入到码字多项式中,xl可以通过b)中本原关系表找到,最后在GF(2m)上计算多项式的值,如果结果为0,表示x为这个多项式的根,将R中前1000*ng个比特分割成1000个码字,计算码根分布,如果码根出现的概率最大值小于0.9,则进入步骤d),统计码根出现的概率,统计码根概率与概率最大值相差小于0.1的码根数目rootnum,信息位长度y=n-rootnum,如果此时起点偏移量和码长都是接收到的码字序列的真实起点和码长,那么BCH码字阶数m、信息位长度k、纠错能力t之间的关系表中必然存在一个纠错能力t使得n=2m-1,y=k,如果没有t满足条件,则进入步骤d),否则进入步骤e);
d)如果flag=0,则定义m=2,shift=0,flag=1,R=R0+shift,n=2m-1,执行步骤b),如果flag=1且shift<n,则shift=shift+1,如果flag=1且shift=n,则m=m+1,shift=0,R=R0+shift,执行步骤c);
e)接收到的码字序列的真实起点偏移量start=shift,根据最大的前rootnum个码根得到一个由rootnum个一元一次多项式,将这些多项式相乘、化简,从而得到生成多项式G,G的阶数degree=rootnum;
〈4〉本原多项式识别
a.定义码字序列R=R0+start,m=log(ng)/log(2),根据二进制本原BCH码阶数m、纠错能力t和信息位长度k之间的对应关系得到信息位长度k,阶数m共有prime_max个本原多项式,本原多项式序数primenum=0,误比特数Errorbits=0,最小误比特数Errormin=1e20,无法纠错的次数Error=0,最可能的本原多项式的序数posprimenum=0,译码再编码后对比错误最小个数ErrorRmin=1e20;
b.根据阶数m的第primenum个本原多项式,计算伽罗华域,对接收到的码字序列R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数;
c.根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
d.无法纠错的次数Error=Errorno*k+Errorbits,如果Error<Errormin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;如果Error=Errormin且ErrorR<ErrorRmin,则Errormin=Error,posprimenum=primenum,ErrorRmin=ErrorR;
e.本原多项式序数primenum=primenum+1,如果primenum=prime_max,则执行步骤f,否则执行b;
f.根据阶数m的第primenum个本原多项式,计算伽罗华域,对R的前2000个码字进行译码,Errorno是译码过程中不能纠正的错误个数,Errorbits是译码纠正的错误个数,根据生成多项式G将译码后的信息序列进行编码,得到的码字为code,将code与R的前2000个码字进行对比,不相同的位数为ErrorR;
g.第primenum个本原多项式就是接收到的码字序列使用的本原多项式,置信度为:1-ErrorR/2000/ng。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310343717.1A CN103401567B (zh) | 2013-08-08 | 2013-08-08 | 一种二进制本原bch码参数盲识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310343717.1A CN103401567B (zh) | 2013-08-08 | 2013-08-08 | 一种二进制本原bch码参数盲识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103401567A CN103401567A (zh) | 2013-11-20 |
CN103401567B true CN103401567B (zh) | 2016-02-24 |
Family
ID=49565124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310343717.1A Expired - Fee Related CN103401567B (zh) | 2013-08-08 | 2013-08-08 | 一种二进制本原bch码参数盲识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103401567B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184558A (zh) * | 2014-09-11 | 2014-12-03 | 山东大学 | 一种turbo码输出块长的快速盲识别方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8023888B2 (en) * | 2006-02-08 | 2011-09-20 | The Directv Group, Inc. | Blind identification of advanced modulation and coding modes |
CN102801501A (zh) * | 2012-08-21 | 2012-11-28 | 中国电子科技集团公司第三十六研究所 | 一种bch缩短码的编码参数的识别方法 |
CN102970048A (zh) * | 2012-09-13 | 2013-03-13 | 电子科技大学 | 一种基于bch码译码的bch码编码参数盲识别方法 |
-
2013
- 2013-08-08 CN CN201310343717.1A patent/CN103401567B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8023888B2 (en) * | 2006-02-08 | 2011-09-20 | The Directv Group, Inc. | Blind identification of advanced modulation and coding modes |
CN102801501A (zh) * | 2012-08-21 | 2012-11-28 | 中国电子科技集团公司第三十六研究所 | 一种bch缩短码的编码参数的识别方法 |
CN102970048A (zh) * | 2012-09-13 | 2013-03-13 | 电子科技大学 | 一种基于bch码译码的bch码编码参数盲识别方法 |
Non-Patent Citations (2)
Title |
---|
二进制BCH码的一种盲识别方法;王甲峰 等;《信息与电子工程》;20111025;第9卷(第5期);第69-73页 * |
基于码根信息差熵和码根统计的BCH码识别方法;杨晓静 等;《探测与控制学报》;20100626;第32卷(第3期);第591-595页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103401567A (zh) | 2013-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106685656A (zh) | 一种基于极化码的连续变量量子密钥分发系统中的数据纠错方法 | |
RU2595542C2 (ru) | Устройство и способ для передачи и приема данных в системе связи/широковещания | |
US8413008B2 (en) | Method for recovery of lost and/or corrupted data | |
CN103888151B (zh) | 一种基于分组马尔可夫叠加编码的多码率码编码方法 | |
CN106685434B (zh) | 一种部分极化的polar码的构造方法 | |
US9716608B2 (en) | Multi-element code modulation mapping method, device and computer storage medium | |
CA2797043A1 (en) | Method of reducing peak-to-average power ratio, cubic metric and block error rate in ofdm systems using network coding | |
CN107911195A (zh) | 一种基于cva的咬尾卷积码信道译码方法 | |
CN109981112A (zh) | 一种部分循环冗余校验辅助的排序统计译码方法 | |
CN109983705B (zh) | 用于生成极化码的装置和方法 | |
CN100589327C (zh) | 编码、解码方法及编码器、解码器 | |
CN108282265A (zh) | 纠错编码方法、装置、设备及计算机可读存储介质 | |
Van de Meeberg | A tightened upper bound on the error probability of binary convolutional codes with Viterbi decoding | |
CN107332571A (zh) | 一种Polar码构造方法及装置 | |
CN102104444A (zh) | Lte系统中信道质量指示的快速编译码方法 | |
CN103401567B (zh) | 一种二进制本原bch码参数盲识别方法 | |
CN105490684A (zh) | 一种有限长ldpc码的打孔算法 | |
CN115173993A (zh) | 极化码中一种EPS-SCL-Flip译码方法 | |
CN105406877B (zh) | 一种短码长循环码的译码方法 | |
CN102780496A (zh) | Rs码译码方法及装置 | |
CN103379060A (zh) | 一种有限几何ldpc码参数盲估计方法 | |
CN103401568A (zh) | 基于伽罗华域傅里叶变换的rs码编码参数盲识别方法 | |
CN103220007B (zh) | 一种自适应调整子码不可靠位数的tpc迭代译码算法 | |
CN102970048B (zh) | 一种基于bch码译码的bch码编码参数盲识别方法 | |
CN101621300B (zh) | 一种软输入软输出nr译码器及其软信息生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160224 Termination date: 20180808 |
|
CF01 | Termination of patent right due to non-payment of annual fee |