发明名称 一种RS码与删余卷积码级联码的参数盲识别方法
摘要 一种RS码与删余卷积码级联码的参数盲识别方法,属信道编码盲识别技术领域。首先采用基于Walsh-Hadamard算法(简称WH算法)的删余卷积码参数盲识别方法识别删余卷积码的码长、起点、删余模式以及生成矩阵,然后使用维特比译码算法进行译码;再根据译码后的序列采用矩阵分析法识别交织宽度和交织长度,并根据交织参数进行解交织;最后根据解交织后的序列采用遍历法和伽罗华域的快速傅里叶变换的方法识别RS码的参数。本发明给出了解决RS码与删余卷积码级联码参数的盲识别问题的方法,并且在降低识别数据量的同时提高了RS码小阶数时的识别率。
申请公布号 CN104467875A 申请公布日期 2015.03.25
申请号 CN201410747946.4 申请日期 2014.12.09
申请人 山东大学 发明人 马丕明;张;杨勇
分类号 H03M13/15(2006.01)I;H03M13/23(2006.01)I 主分类号 H03M13/15(2006.01)I
代理机构 济南金迪知识产权代理有限公司 37219 代理人 许德山
主权项 一种RS码与删余卷积码级联码参数盲识别方法,通过计算机进行数据读入、分析及计算处理,该方法步骤如下:(1)由计算机从待识别数据读入部分待识别的数据,读入数据长度为Lr,Lr应大于35000;(2)设读入数据的起点Indent的初始值为0,对码长和起点进行多次识别,设变量Index为码长和起点的识别次数,初值为0;设两个数组:分别为存储多次识别的码长数组Nnum和存储多次识别的起点数组BN;(3)判断Indent+26000是否小于Lr,若小于则转入步骤(4),否则转入步骤(7);(4)识别此时的码长,将识别出的码长存入数组Nnum中的第Index个位置;识别码长的方法如下:(a)用读入数据的第Indent个数据以后的数据建立一个p×q大小的矩阵,其中p为行数,q为列数,q的范围为[2,100],且p&gt;q;(b)对建立的矩阵进行化简,化简过程如下:对所建立的矩阵从左到右按列化简,若对角线上元素为1,则将此行依次与其下方每一行进行模二加运算,如果对角线元素为0,则寻找该列对角线下方的非零元素所在行,将非零元素所在行与当前行互换,再执行上述化简,如果对角线下方元素全为0,则不再化简;计算化简后的矩阵的秩,当矩阵不是满秩矩阵时,则统计矩阵左上角单位阵的维数,记录下此时的矩阵列数和单位阵的维数;(c)将列数q加1,若q&gt;100则转入(d),否则则转入(b);(d)比较所有的记录下的单位阵的维数,找到出现概率最大的值z,然后统计所有满足单位阵维数等于z时的列数,求其最大公约数,即为所求的码长;(5)识别此时的起点,将识别出的起点存入数组BN中的第Index个位置,识别起点的方法如下:(e)在得到码长值后,使用读入数据的第Indent个数据以后的数据重新建立一个p′×q′大小的矩阵,其中p’为行数,q’为列数,q’的值为步骤(d)中所求码长的20倍,同时使p’&gt;q’;(f)按步骤(b)中行化简的方法对(e)中建立的矩阵的行进行化简,化简完成后,分析得到的识别矩阵的对角线元素,找到规律矩阵的起点位置,推算出起点;(6)判断数组Nnum中第Index个数是否在区间[2,8]中,若在区间[2,8]中则使Index加1,Indent加840,转入步骤(3),否则仅使Indent加840,转入步骤(3);(7)找到数组Nnum中出现次数最多的数值即为最终识别出的删余卷积码的码长PuncNum;找到数组BN中出现次数最多的数值即为最终识别出的删余卷积码的起点,转入步骤(8);(8)设循环变量WHNRec表示约束长度,初值为3;(9)判断WHNRec是否小于等于12,若WHNRec小于等于12转入步骤(10),否则识别出错,整体识别过程结束;(10)识别此时的校验矩阵,具体识别步骤如下:(g)将1×2<sup>2(WHNRec+1)</sup>维数的码字个数向量与1×2<sup>2(WHNRec+1)</sup>阶的Hadamard矩阵相乘,得到1×2<sup>2(WHNRec+1)</sup>维的解向量,我们不直接采用矩阵相乘的方式,而是按照2<sup>(WHNRec+1)</sup>阶Hadamard矩阵扩展为2<sup>2(WHNRec+1)</sup>阶Hadamard矩阵的方法,先替换为2<sup>2(WHNRec+1)</sup>阶Hadamard矩阵相应位置的数据,再做乘法,其中矩阵扩展的方法为将2<sup>(WHNRec+1)</sup>阶Hadamard矩阵的每个位置的变量置换为2<sup>(WHNRec+1)</sup>阶Hadamard矩阵并乘以2<sup>(WHNRec+1)</sup>阶Hadamard矩阵相应位置的数值,得到2<sup>2(WHNRec+1)</sup>阶的Hadamard矩阵;(h)求Hadamard矩阵的解即可得到校验矩阵H(D);(11)定义变量deg为初始化生成多项式的阶数,其初值等于步骤(9)中WHNRec的值;(12)判断deg是否小于码长减1的差与(WHNRec+1)的乘积,即是否为deg&lt;(PuncNum‑1)*(WHNRec+1),若小于则转入步骤(13),否则WHNRec加1,转入步骤(9);(13)识别生成矩阵和删余模式,具体步骤如下:(i)设变量Pindex为删余模式序号,初值为0;(j)由删余模式序号Pindex计算得到删余模式,计算公式为Pindex/2<sup>PuncNum‑2</sup>,删余模式由多个组数组成,每个组数包括两个二进制数,由上式得到商和余数,将余数转换为二进制数,所得的商是几则对应的数组就是几,且这一组数的值规定为11,如得到的商为1,则第一组数为11;如得到的商为2,则第二组数为11,而转化为二进制的余数则按照从高位到低位的顺序依次排在删余模式中除了商所对应的数组之外的其它数组中,且余数中的位对应是1时其值规定为10,余数中的位对应是0时其值规定为01,这样根据商和余数按照上述规则即得到删余模式,如:删余码长为4,Pindex为6时,则6/4=1余2,其中商为1表示删余模式第一组数为11,再将余数2转换为二进制数为10,分别排在第零组位置和第二组位置,则第零组位对应余数中的1表示删余模式第零组数为10,第二组位对应余数中的0表示删余模式第二组为01,所以得到删余模式为10,11,01;(k)由识别得到校验矩阵H(D)其维数为1*PuncNum,根据(j)中求出的删余模式补充零得到一个针对删余之前的校验多项式M(D),维数为1*2L,L=(PuncNum‑1);例如:删余模式为<img file="FDA0000628453100000031.GIF" wi="732" he="65" />其中P中含有PuncNum个1和(PuncNum‑2)个零,对于删余模式中含1的位置由校验矩阵H(D)中的各个对应分量替补上,从而得到删余之前的校验多项式M(D);(l)设Gp(D)为删余卷积码的生成多项式,根据生成矩阵和校验矩阵的正交性建立方程组Gp(D)H(D)<sup>T</sup>=0,其中H(D)<sup>T</sup>为矩阵H(D)的转置,解线性方程组,若存在不唯一的解向量,则转入步骤(m),否则将得到的解向量分别进行处理,处理方法如下:对每个解向量按奇偶位置进行抽取,得到两个解向量组,由两个解向量组得到两个多项式,计算两多项式的公因式,若两多项式不含公因式,则此时删余模式序号Pindex所代表的删余模式即为所识别出的删余模式,转入步骤(14),否则转入步骤(m);(14)根据识别出的删余模式,将删余卷积码编码时删掉的码补零,得到需要译码的序列;(15)根据之前识别出的删余卷积码参数:码长、起点、删余模式以及校验矩阵对待识别数据进行译码,使用维特比译码算法得到解删余卷积码后的序列;(16)识别交织长度,具体步骤如下:(m)设变量q_max,取值为100;(n)用解删余卷积码后的序列重新建立一个p<sub>1</sub>×q<sub>1</sub>大小的矩阵,其中p<sub>1</sub>是行数,q<sub>1</sub>是列数,q<sub>1</sub>范围为[20,q_max],且p<sub>1</sub>>q<sub>1</sub>;对这个矩阵进行步骤(b)的过程,得到当秩不等于列数时的所有列数,求这些列数的最大公约数,若求出的最大公约数大于0,则此时的最大公约数即为识别出的交织长度,转入步骤(17);否则转入步骤(q);(o)q_max加50,转入步骤(p);(17)识别交织起点,具体算法如下:(p)使用解删余卷积码后的序列重新建立一个p<sub>2</sub>×q<sub>2</sub>大小的矩阵,其中p<sub>2</sub>是行数,q<sub>2</sub>是列数,设q<sub>2</sub>的初值为0,且p<sub>2</sub>×q<sub>2</sub>;对这个矩阵进行步骤(b)中的化简过程,保存下此时矩阵的秩;(q)q<sub>2</sub>加1,判断q<sub>2</sub>是否小于识别出的交织长度,若q<sub>2</sub>小于交织长度,转入步骤(r),否则转入下一步;(r)求(r)中保存下的所有秩中秩最小的位置即为识别出的交织起点;(18)识别交织宽度,具体算法如下:(s)求出交织长度的所有因子,得到因子的个数为yznum,并将这些因子存在数组yz中,其中yz<sub>0</sub>表示因子数组中第一个因子,yz<sub>1</sub>表示因子数组中第二个因子···以此类推;(t)设循环变量ii的初值为0;(u)假设yz<sub>ii</sub>是交织宽度,(如果ii=1,则yz<sub>ii</sub>表示步骤(s)中的yz<sub>1</sub>,)对解删余卷积码后的序列进行解交织,将解交织后序列排成列数为交织长度除以yz<sub>ii</sub>的商的矩阵并计算其秩,并存储下此时的秩乘以yz<sub>ii</sub>再除以交织长度的值,放在数组zl中;(v)ii加1,若ii小于yznum则转入步骤(u),否则转入步骤(w);(w)求数组zl中最小值,对应的因子即为识别出的交织宽度;(19)解交织的具体方法如下:(x)将解删余卷积码后的序列删掉前面交织起点个数的码字,得到待解交织序列;(y)建立一个列数为交织长度除以交织宽度商的矩阵,将步骤(15)中得到的解删余卷积码后的序列即待解交织序列放入建立的矩阵中,然后按照列数的顺序读取出每一列的数据加以排列,直到读完最后一列数据,即可得到解交织后的序列;如序列011001010为待解交织序列,设交织宽度为3,交织长度为9,则将序列放入列数为9/3=3的矩阵中,即<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mfenced open='' close=''><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000628453100000041.GIF" wi="196" he="216" /></maths>然后先读第一列为000,第二列为101,第三列为110,则解交织后序列为000101110;(20)RS码参数盲识别方法如下:(z)选择构成RS码的有限域的阶m为2,每一个RS码的符号都属于有限域GF(2<sup>m</sup>)中的一个元素,其中GF(2<sup>m</sup>)表示含有2<sup>m</sup>个元素的有限域;(aa)选择一个次数为m的本原多项式;(bb)根据步骤(aa)中选择的本原多项式,将解交织后的数据每m个分成一组,转换为有限域GF(2<sup>m</sup>)中的一个符号序列,令转换后的符号序列为(c<sub>0</sub>,c<sub>1</sub>,…,c<sub>n</sub>,…);(cc)令<img file="FDA0000628453100000043.GIF" wi="329" he="74" />表示RS码的一个码字,该码字用多项式<img file="FDA0000628453100000042.GIF" wi="598" he="95" />表示,式中各项为a<sub>j</sub>x<sup>j</sup>,0≤j≤2<sup>m</sup>‑2,x为变量;a(x)的伽罗华域傅里叶变换为一与a(x)次数相同的多项式,用A(z)表示该多项式,则<img file="FDA0000628453100000051.GIF" wi="637" he="100" />式中各项为A<sub>j</sub>z<sup>j</sup>,0≤j≤2<sup>m</sup>‑2,z为变量,z<sup>j</sup>的系数为<img file="FDA0000628453100000052.GIF" wi="318" he="156" />α是生成该RS码的本原多项式的根,a<sub>j</sub>是多项式a(x)中x<sup>j</sup>的系数;如果α<sup>j</sup>是码字多项式a(x)的一个根,则其伽罗华域傅里叶变换中z<sup>j</sup>的系数A<sub>j</sub>=0;RS码生成多项式的根一定也是码字多项式的根,且其生成多项式g(x)=(x+α<sup>i</sup>)(x+α<sup>i+1</sup>)…(x+α<sup>i+2t‑1</sup>),其中t是纠错容量,i是一整数,因此对RS码的码字多项式进行伽罗华域傅里叶变换,存在一个整数i,使得A<sub>i+2t‑1</sub>,…,A<sub>i+1</sub>,A<sub>i</sub>为0;将符号序列(c<sub>0</sub>,c<sub>1</sub>,…,c<sub>n</sub>,…)从第一个位置开始,依次将每2<sup>m</sup>‑1个连续的符号分为一组,共分成N组,每组都当成RS码的一个码字,对其计算伽罗华域傅里叶变换,统计多项式A(z)中各系数为0的次数;令<img file="FDA0000628453100000053.GIF" wi="478" he="108" />式中N<sub>j</sub>(0≤j≤2<sup>m</sup>‑2)是从右向左数<img file="FDA0000628453100000054.GIF" wi="53" he="74" />中的第j个分量,表示对这N组码字多项式计算伽罗华域傅里叶变换,有N<sub>j</sub>个码字使得其伽罗华域傅里叶变换A(z)中z<sup>j</sup>系数A<sub>j</sub>=0;(dd)分析步骤(cc)中统计的结果;根据阶数m设置阈值threshold,如果m<6,设置threshold=35,否则设置threshold=10;若有偶数个元素大于threshold,并且这偶数个元素在位置上连续,则RS码的码长为2<sup>m</sup>‑1;令N<sub>i+2t‑1</sub>,…,N<sub>i+1</sub>,N<sub>i</sub>是<img file="FDA0000628453100000055.GIF" wi="56" he="71" />中大于threshold的元素,则该RS码的纠错容量为t,生成多项式g(x)=(x+α<sup>i</sup>)(x+α<sup>i+1</sup>)…(x+α<sup>i+2t‑1</sup>),至此已完成了RS码的识别,识别终止,否则转到下一步;(ee)如果还有没有遍历的次数为m的本原多项式,选择下一个次数为m的本原多项式,回到第(cc)步;否则m加1,回到第(cc)步。
地址 250100 山东省济南市历城区山大南路27号