专利名称:基于伽罗华域的ldpc码校验矩阵类下三角化过程的算法的制作方法
技术领域:
本发明涉及LDPC码编码技术领域,具体是指将一个非方阵的LPDC码校验矩阵最大程度的转化为类下三角结构,增强LDPC码的抗噪能力。
背景技术:
在信道编码领域,LDPC码是一类具有稀疏校验矩阵的线性分组码,不仅具有逼近Shannon限的良好性能,而且译码复杂度低,结构灵活,成为近年来信道编码领域的研究热点。
在LDPC码编码领域处理校验矩阵的方法主要是利用高斯消元将校验矩阵下三角化或通过初等变换(行列变换)将校验矩阵类下三角化。高斯消元法虽然简单易行,但是是以牺牲LDPC码性能为代价的。而类下三角化校验矩阵只对校验矩阵进行初等变换,不影响矩阵的稀疏性(矩阵中非0 G GF (q)元素占矩阵所有元素的比例),LDPC编码中校验矩阵的稀疏性是影响编码复杂度和编码性能的最关键因素之一。
下三角形式校验矩阵的LDPC码编码中,校验矩阵的类下三角化程度直接决定的编码后的LDPC码抗噪性能。目前较为普遍的将校验矩阵类下三角化的算法是由ThomasJ.Richardson 和 Rudiger L.Urbanke 提出的 Greedy_A 算法。
本文提出的将矩阵类下三角化的算法消除了 Greedy_A算法存在的弊端。将矩阵分块处理,在保证校验矩阵稀疏性的同时得到相对Greedy_A算法对角化程度更高的校验矩阵。发明内容
本发明的目的在于克服现有技术中所存在的上述不足,在保证不改变LDPC码校验矩阵稀疏性的前提下,通过基本的初等变换将校验矩阵尽可能的转化为类下三角结构的形式,以提高LDPC编码性能。
为了实现上述发明目的,本发明提供了以下技术方案:
本发明的技术方案的核心思想就是对校验矩阵进行分块处理,将矩阵中的0G GF(q)尽可能的向矩阵的右上方移动,以转化为阶梯状矩阵,在阶梯矩阵的基础上进行类下三角化过程。
本算法的通过下述技术方案实现:
一种基于伽 罗华域的LDPC码校验矩阵类下三角化过程的算法,矩阵类下三角化过程住包括下述两个过程:
a、将校验矩阵转化为阶梯状矩阵。
b、将阶梯状矩阵转化为类下三角结构的矩阵。
其中步骤a是本算法的关键步骤,体现了本算的核心技术方案,是对矩阵的不同部分进行多次相同操作的过程,定义这些多次的相同操作为下拉操作。
对一个非方阵的校验矩阵H(mXn)进行下拉操作,会得到两个矩阵。分别是经过行列变换后的新矩阵H’和H’的一个子矩阵M。下拉操作的主要作用就是将校验矩阵变换成初步的阶梯形式。
下面解释下拉操作的具体内容:
第一步:首先计算矩阵的所有行重(weight_row(i), i=l, 2.......m)和所有列重(weight_col (j), j=l, 2.......n)。将矩阵H的行按weight_row的升序重新排列,矩阵H的列按weight_col的降序重新排列。
第二步:根据weight_col找出所有列重最小元素的列集合:min_weight_cols。
第三步:对列集合min_weight_cols中每一列,找住该列的所有非0 G GF(q)元素所在的行,计算这些行的行重之和:sub_weight_rows。
第四步:找住列集合min_weight_cols中,sub_weight_rows最小的其中一列,将该列移至矩阵H的最后一列。
第五步:将矩阵H的最后一列中所有非0 G GF(q)元素所在的行移至矩阵底部。
这样便得到了新的矩阵H’和他的一个子矩阵M,M为H’除去最后一列和最后一列中包含非0 e GF(q )的所有行得到的子矩阵。
经过下拉操作校验矩阵转化成只含有一个阶梯的新矩阵H’,并且保证了 H’中非0G GF(q)元素尽量的向矩阵下方和左方移动。为后面的类对角化过程提供了有利的条件。
步骤a的具体过程就是对校验矩阵H进行下拉操作得到矩阵H’,再对H’的子矩阵M进行下拉操作,如此重复直到无法进行下拉操作位置。就会通过初等变换把原校验矩阵H转化为一个阶梯矩阵。
步骤b的具体实现过程如下所述:
第一步:找出阶梯矩阵的最后一列,选出该列中的首个非0 G GF(q)元素作为起点,定义该元素为ai;n ;
第二步:从al n开始向矩阵左上方依次遍历(ai,n, a^2 n_2.......判断当前的元素是否为0 E GF(q),若果是,执行操作Y,否则执行操作N ;
其中操作Y的定义为:
将遍历元素左边的首个非0 G GF(q)元素所在列与当前列做列交换。
操作N的定义为:
检查遍历元素所在列中,该元素以上是否存在非0 G GF (q)元素,如果有,将这些非0 E GF(q)元素所在行移至矩阵底部。否则不做任何操作。
与现有技术相比,本发明的有益效果:
一、本发明公布的算法对矩阵的所有操作仅限与行交换和列交换,不会影响LDPC编码校验矩阵的稀疏性。使用经过本算法处理后的LDPC编码校验矩阵进行LDPC编码,会使信息序列的抗噪性能获得较大幅度提升。
二、本算法原理易于理解,实现过程简单易行。由于他只对校验矩阵进行基本的行列交换操作。不管是软件仿真还是硬件实现,都很容易实现。
三、与当前使用较为普遍的法相比,本算法消除了法存在的漏洞,性能完全优于Greedy_A算法。
四、本算法具有一定的通用性,在二进制伽罗华域和多进制伽罗华域均适用。
:
图1为本算法步骤a的下拉操作示意图。
图2为本算法步骤a的实现步骤图。
图3为本算法流程图。
图4为下拉操作流程图。
图5为本算法步骤a流程图。
图6为本算法步骤b流程图。
图7为背景技术中Greedy_A算法示意图。
图8为衡量校验矩阵类对角化程度g定义。
图9为本算法和背景技术中Greedy_A算法g均值对比。
图10为本算法和背景技术中Greedy_A算法g方差对比。
具体实施方式
下面结合试验例及具体实施方式
对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
如图3所示,一种基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,矩阵类下三角化过程住包括下述两个过程:
a、将校验矩阵转化为阶梯状矩阵。
b、将阶梯状矩阵转化为类下三角结构的矩阵。
如图2所示,其中步骤a是本算法的关键步骤,体现了本算的核心技术方案,是对矩阵的不同部分进行多次相同操作的过程,定义这些多次的相同操作为下拉操作。
对一个非方阵的校验矩阵H(mXn)进行下拉操作,会得到两个矩阵。分别是经过行列变换后的新矩阵H’和H’的一个子矩阵M。下拉操作的主要作用就是将校验矩阵变换成初步的阶梯形式。
如图1、图4所示,下面解释下拉操作的具体内容:
第一步:首先计算矩阵的所有行重(weight_row(i), i=l, 2.......m)和所有列重(weight_col (j), j=l, 2.......n)。将矩阵H的行按weight_row的升序重新排列,矩阵H的列按weight_col的降序重新排列。
第二步:根据weight_col找出所有列重最小元素的列集合:min_weight_cols。
第三步:对列集合min_weight_cols中每一列,找住该列的所有非0 G GF(q)元素所在的行,计算这些行的行重之和:sub_weight_rows。
第四步:找住列集合min_weight_cols中,sub_weight_rows最小的其中一列,将该列移至矩阵H的最后一列。
第五步:将矩阵H的最后一列中所有非0 G GF(q)元素所在的行移至矩阵底部。
这样便得到了新的矩阵H’和他的一个子矩阵M,M为H’除去最后一列和最后一列中包含非0 e GF(q)的所有行得到的子矩阵。
经过下拉操作校验矩阵转化成只含有一个阶梯的新矩阵H’,并且保证了 H’中非0G GF(q)元素尽量的向矩阵下方和左方移动。为后面的类对角化过程提供了有利的条件。
如图5所示,步骤a的具体过程就是对校验矩阵H进行下拉操作得到矩阵H’,再对H’的子矩阵M进行下拉操作,如此重复直到无法进行下拉操作位置。就会通过初等变换把原校验矩阵H转化为一个阶梯矩阵。
如图6所示,步骤b的具体实现过程如下所述:
第一步:找出阶梯矩阵的最后一列,选出该列中的首个非0 G GF(q)元素作为起点,定义该元素为ai;n ;
第二步:从al n开始向矩阵左上方依次遍历(ai,n,a^2 n_2.......a^w),判断当前的元素是否为0 E GF(q),若果是,执行操作Y,否则执行操作N ;
其中操作Y的定义为:
将遍历元素左边的首个非0 G GF(q)元素所在列与当前列做列交换。
操作N的定义为:
检查遍历元素所在列中,该元素以上是否存在非0 G GF(q)元素,如果有,将这些非0 E GF(q)元素所在行移至矩阵底部。否则不做任何操作。
本发明无论从理论层面分析还是从实际性能两方面比较本算法和Greedy_A算法的性能。都可以得到本算法优于Greedy_A算法的结论。
首先简述Greedy_A算法的思想,如图7所示,主要包括三个步骤:
( I)对于一个校验矩阵A,对其中的每列作如下的处理:独立地以1- a(a G (0,I))的概率宣布为已知列,否则,宣布为删除列,将其删除。令i =
(2)判断是否结束。如果A中既没有已知列,也没有重量为I的行,把当前矩阵输出,结束。否则,执行对角延伸步骤。
(3)宣布已知列。将i中和I中的行相连的列宣布为已知列。返回第2步。
对角延伸步骤是Greedy_A算法的核心部分。假设现在有一个矩阵A,而且其中的一些列已经被宣布为已知列。我们感兴趣的情况不外乎两种:要么这些已知列中没有一个是和重量为I的行相连的;要么这些已知列都是和重量为I的行相连的。在这里,第r行和第c列相连,是指Ak=I。考虑前一种情况(这往往也是刚开始时的情况),作列交换,使得所有的已知列成为A的前列。然后删除这些列,把剩下的矩阵作为1.考虑后一种情况,设C1,…,Ck是已知列,&…rk是I重的行,并且Ci和ri是相连的。重新排列这些行和列使得C1,…,Ck和ri,…rk成为A的前k列和前k行。此时,A中左上角的kXk子矩阵是单位阵,并且前k行每行都只有一个·非零元素。
Greedy_A算法虽然可以将矩阵转化成近似下三角形式。但有个很大的漏洞。就是在第二步判决时,如果没有已知列,且找不到行重为I的行,则直接输出当前矩阵并结束算法。但这并不代表矩阵不能继续对角化了,浪费了很大对角化的空间。举反例证明该算法漏洞:
例如矩阵 'II ' I I
II I I I
很明显这个矩阵是可以对角化的。但是如果按照Greedy_A算法的流程。经过第二步得到矩阵d ,由于他没有行重为I的行,在第三步宣布已知列时就不会宣布存在已知列。那么返回第二步判决时既没有已知列,也没有行重为I的行。他就会直接输出,不会继续对角化。这样就白白浪费了 4行可以对角化的资源。
然而按照本算法的设计思想,严格按照算法流程执行。这个特殊的矩阵将可以继续对角化操作并得到最终的类下三角结构矩阵:
权利要求
1.基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,其特征在于,包括以下步骤: a、将校验矩阵转化为阶梯状矩阵; b、将阶梯状矩阵转化为类下三角结构的矩阵。
2.如权利要求1所述的基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,所述步骤a具体为:对所述校验矩阵的不同部分进行多次相同的操作过程,所述操作过程为下拉操作过程。
3.如权利要求2所述的基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,,步骤a中所述 下拉操作过程具体为: 第一步:首先计算所述校验矩阵的所有行重(weight _raw(i),i =1,2.......m)和所有列重(weight _col0J =1,2.......n ); 将矩阵孖的行按的升序重新排列,将矩阵孖的列按_col的降序重新排列; 第二步:根据w 'gM_cd找出所有列重最小元素的列集合:mm_wei'gM_cols 第三步:对列集合中每一列,找住该列的所有非O e Gi (q)元素所在的行,计算这些行的行重之和:沒出_w^ght jows ; 第四步:找住列集合JWn_w 'gM__cols中,md_w 'gM_rows最小的其中一列,将该列移至矩阵孖的最后一列; 第五步:将矩阵H的最后一列中所有非O e GF(Si)元素所在的行移至矩阵底部。
4.如权利要求1所述的基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,所述步骤b具体为: 第一步:找出阶梯矩阵的最后一列,选出该列中的首个非OeGi (q)元素作为起点,定义该元素为aIsH ; 第二步:从开始向矩阵左上方依次遍历.......31,11-/+1 ),判断当前的元素是否为,如果是,将遍历元素左边的首个非Oe Gi (q)元素所在列与当前列做列交换;如果否,检查遍历元素所在列中,该元素以上是否存在非元素,如果存在,将这些非0eGF(q)元素所在行移至矩阵底部,否则不做任何操作。
全文摘要
本发明涉及LDPC码编码技术领域,具体是指将一个非方阵的LPDC码校验矩阵最大程度的转化为类下三角结构,增强LDPC码的抗噪能力。本发明提出的基于伽罗华域的LDPC码校验矩阵类下三角化过程的算法,包括以下步骤a、将校验矩阵转化为阶梯状矩阵;b、将阶梯状矩阵转化为类下三角结构的矩阵;本发明的目的在于克服现有技术中所存在的上述不足,在保证不改变LDPC码校验矩阵稀疏性的前提下,通过基本的初等变换将校验矩阵尽可能的转化为类下三角结构的形式,以提高LDPC编码性能。
文档编号H03M13/11GK103236861SQ201310173099
公开日2013年8月7日 申请日期2013年5月10日 优先权日2013年5月10日
发明者任域皞, 何春, 杨帆 申请人:电子科技大学