发明名称 一种非正则低密度奇偶校验码的构造方法
摘要 本发明提供了一种非正则低密度奇偶校验码的构造方法,它首先构造有限域上的矢量矩阵,然后通过循环移位、倒序处理、截取得到新的矢量矩阵,最后将这个新的矢量矩阵的元素用向量替换得到一个稀疏矩阵,将这个稀疏矩阵与双对角线元素全为“1”的矩阵并排就得到了低密度奇偶校验矩阵。由于采用了循环移位,大大降低了软硬件实现的复杂度,整个方法在保证构造简单的同时,可采用完全并行的操作,适合硬件实现,尤其可以利用线性反馈移位寄存器,具有高速的编译码潜力,因此,本发明的非正则LDPC码有良好的工程应用前景。
申请公布号 CN1941635A 申请公布日期 2007.04.04
申请号 CN200510021775.8 申请日期 2005.09.30
申请人 电子科技大学;华为技术有限公司 发明人 谢丹;文宇;王军;李少谦
分类号 H03M13/11(2006.01);H03M13/00(2006.01) 主分类号 H03M13/11(2006.01)
代理机构 电子科技大学专利中心 代理人 曾磊
主权项 1、一种非正则校验矩阵的构造方法,其特征是它包括下面的步骤:步骤1,构造子矩阵P首先,构造初始有限域矢量矩阵:选取阶为N的有限域,域中元素为从1至N的正整数,我们用带箭头的数字来表示这些元素;选取该域中所有元素,从小到大排成一列,得到一个N×1的列矩阵K:<maths num="001"><![CDATA[ <math><mrow><mi>K</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><mn>1</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mn>2</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mn>3</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mi>N</mi><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>用得到的列矩阵K按照下面的公式计算得到一个N×N的初始矢量矩阵<img file="A2005100217750002C2.GIF" wi="55" he="51" /><maths num="002"><![CDATA[ <math><mrow><mover><mi>&Lambda;</mi><mo>&RightArrow;</mo></mover><mo>=</mo><mi>K</mi><mo>&times;</mo><msup><mi>K</mi><mi>T</mi></msup><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><mrow><mn>1</mn><mo>&times;</mo><mn>1</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mn>1</mn><mo>&times;</mo><mn>2</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mn>1</mn><mo>&times;</mo><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mrow><mn>2</mn><mo>&times;</mo><mn>1</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mn>2</mn><mo>&times;</mo><mn>2</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mn>2</mn><mo>&times;</mo><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mtext></mtext></mtd><mtd><mtext>&CenterDot;</mtext></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mi>N</mi><mo>&times;</mo><mn>2</mn></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mi>N</mi><mo>&times;</mo><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,K<sup>T</sup>是K的转置;这里,N选取大于5的奇素数,同时满足:N=4×q+1其中,q>1且为正整数;再对初始矢量矩阵<img file="A2005100217750002C4.GIF" wi="34" he="51" />中的每个元素进行模N运算,得到如下形式的N×N的初始有限域矢量矩阵<img file="A2005100217750002C5.GIF" wi="53" he="50" /><maths num="003"><![CDATA[ <math><mrow><mover><mi>V</mi><mo>&RightArrow;</mo></mover><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><mrow><mrow><mo>(</mo><mn>1</mn><mo>&times;</mo><mn>1</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mrow><mo>(</mo><mn>1</mn><mo>&times;</mo><mn>2</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mrow><mo>(</mo><mn>1</mn><mo>&times;</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mrow><mrow><mo>(</mo><mn>2</mn><mo>&times;</mo><mn>1</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mrow><mo>(</mo><mn>2</mn><mo>&times;</mo><mn>2</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mrow><mo>(</mo><mn>2</mn><mo>&times;</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><mrow><mrow><mo>(</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mn>1</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mrow><mrow><mo>(</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mn>2</mn><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mo></mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo></mo></mtd><mtd><mover><mrow><mrow><mo>(</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mi>mod</mi><mi>N</mi></mrow><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd><mtd></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd><mtd></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd><mtd><mover><mn>0</mn><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,mod是取模运算符;然后,对初始有限域矢量矩阵<img file="A2005100217750002C7.GIF" wi="32" he="52" />进行循环移位、去零阵、倒序处理、截取处理;循环移位处理:选取N个N×N的子矩阵,按照从1到N列排列,分别定义为第一个子矩阵、第二个子矩阵、……、第N个子矩阵,将初始有限域矢量矩阵<img file="A2005100217750003C1.GIF" wi="31" he="50" />的第一行放到第一个子矩阵的第一行,将初始有限域矢量矩阵<img file="A2005100217750003C2.GIF" wi="30" he="51" />的第二行放到第二个子矩阵的第一行,依次类推,将初始有限域矢量矩阵<img file="A2005100217750003C3.GIF" wi="32" he="51" />的第N行放到第N个子矩阵的第一行;这样就构造出N个子矩阵的第一行;对于第一个子矩阵,将它的第一行的最后一个元素放到第二行的第一个位置,将第一行的第一个元素放到第二行的第二个位置,将第一行的第二个元素放到第二行的第三个位置,依次类推,将第一行的第N-1个元素放到第二行的第N个位置;再将它的第二行的最后一个元素放到第三行的第一个位置,将第二行的第一个元素放到第三行的第二个位置,将第二行的第二个元素放到第二行的第三个位置,依次类推,将第二行的第N-1个元素放到第二行的第N个位置;同样,将它的第N-1行的最后一个元素放到第N行的第一个位置,将第N-1行的第一个元素放到第N行的第二个位置,将第N-1行的第二个元素放到第N行的第三个位置,依次类推,将第N-1行的第N-1个元素放到第N行的第N个位置;这样就构造出了第一个子矩阵;对于第二个子矩阵,将它的第一行的最后一个元素放到第二行的第一个位置,将第一行的第一个元素放到第二行的第二个位置,将第一行的第二个元素放到第二行的第三个位置,依次类推,将第一行的第N-1个元素放到第二行的第N个位置;再将它的第二行的最后一个元素放到第三行的第一个位置,将第二行的第一个元素放到第三行的第二个位置,将第二行的第二个元素放到第二行的第三个位置,依次类推,将第二行的第N-1个元素放到第二行的第N个位置;同样,将它的第N-1行的最后一个元素放到第N行的第一个位置,将第N-1行的第一个元素放到第N行的第二个位置,将第N-1行的第二个元素放到第N行的第三个位置,依次类推,将第N-1行的第N-1个元素放到第N行的第N个位置;这样就构造出了第二个子矩阵;依次类推,对于第N个子矩阵,将它的第一行的最后一个元素放到第二行的第一个位置,将第一行的第一个元素放到第二行的第二个位置,将第一行的第二个元素放到第二行的第三个位置,依次类推,将第一行的第N-1个元素放到第二行的第N个位置;再将它的第二行的最后一个元素放到第三行的第一个位置,将第二行的第一个元素放到第三行的第二个位置,将第二行的第二个元素放到第二行的第三个位置,依次类推,将第二行的第N-1个元素放到第二行的第N个位置;同样,将它的第N-1行的最后一个元素放到第N行的第一个位置,将第N-1行的第一个元素放到第N行的第二个位置,将第N-1行的第二个元素放到第N行的第三个位置,依次类推,将第N-1行的第N-1个元素放到第N行的第N个位置;这样就构造出了第N个子矩阵;这样就构造出了N个N×N的循环子矩阵;经过以上的操作得到了N个N×N的循环子矩阵,它们的列排列构成了N<sup>2</sup>×N的循环移位后的有限域矢量矩阵<img file="A2005100217750004C1.GIF" wi="66" he="50" /><maths num="004"><![CDATA[ <math><mrow><mover><msup><mi>V</mi><mo>&prime;</mo></msup><mo>&RightArrow;</mo></mover><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><msub><mi>V</mi><mn>1</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mn>2</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mi>N</mi></msub><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>去零阵处理:去掉循环移位后的有限域矢量矩阵<img file="A2005100217750004C3.GIF" wi="46" he="52" />中的<img file="A2005100217750004C4.GIF" wi="50" he="64" />这个全零矩阵,得到N-1个循环子矩阵按列排列的(N<sup>2</sup>-N)×N的循环移位并去零阵后的有限域矢量矩阵<img file="A2005100217750004C5.GIF" wi="76" he="52" /><maths num="005"><![CDATA[ <math><mrow><mover><msup><mi>V</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>&RightArrow;</mo></mover><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><msub><mi>V</mi><mn>1</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mn>2</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>倒序处理:对循环移位并去零阵后的有限域矢量矩阵<img file="A2005100217750004C7.GIF" wi="53" he="50" />中的N-1个循环子矩阵每隔一个子矩阵按行进行倒序,也就是对<img file="A2005100217750004C8.GIF" wi="403" he="66" />等下标为偶数的循环子矩阵的1至N行进行逆序排列,所述的逆序排列是指:将原来循环子矩阵中的第一行放到倒序矩阵的最后一行,将原来的循环子矩阵中的最后一行放到倒序矩阵的第一行;将循环子矩阵的第二行放到倒序矩阵的倒数第二行,将原来循环子矩阵中的倒数第二行放到倒序矩阵的第二行;依次进行,将循环子矩阵中第(N-1)/2行放到倒序矩阵的倒数第(N-1)/2行,将原来循环子矩阵中的倒数第(N-1)/2行放到倒序矩阵的第(N-1)/2行;这样就得到了倒序矩阵;由于N为大于5奇素数,所以矢量矩阵<img file="A2005100217750004C9.GIF" wi="52" he="51" />经过倒序处理后得到(N<sup>2</sup>-N)×N的循环移位、去零阵、倒序处理后的有限域矢量矩阵<img file="A2005100217750004C10.GIF" wi="80" he="52" /><maths num="006"><![CDATA[ <math><mrow><mover><msup><mi>V</mi><mrow><mo>&prime;</mo><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>&RightArrow;</mo></mover><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><msub><mi>V</mi><mn>1</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msubsup><mi>V</mi><mn>2</mn><mi>adv</mi></msubsup><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mn>3</mn></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msubsup><mi>V</mi><mn>4</mn><mi>adv</mi></msubsup><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mover><msub><mi>V</mi><mrow><mi>N</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>&RightArrow;</mo></mover></mtd></mtr><mtr><mtd><mover><msubsup><mi>V</mi><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow><mi>adv</mi></msubsup><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,<img file="A2005100217750005C2.GIF" wi="79" he="69" />等带有adv的符号表示行倒序后的矢量矩阵;截取处理:下面在对循环移位、去零阵、倒序处理后的有限域矢量矩阵<img file="A2005100217750005C3.GIF" wi="61" he="51" />进行截取处理之前,需要确定三个重要的参数:有限域的阶N,列权值W,码率R;其中,有限域的阶N已经确定,列权值W是指子矩阵P的每列中‘1’的个数,列权值W应选取小于N-2的正整数,列权值W的选择方法是:如果阶N=4×q+1,则列权值W选择为4;如果阶N=8×q+1,则列权值W选择为4或8,其中,q>1且为正整数;码率R根据用户对通信系统的要求而定,码率R的选择要求保证R/(1-R)为大于或等于1的正整数,码率R的选择值有:0.5、0.75、0.8、0.875、0.9;构造一个行数为N×W、列数为N的矩阵,命名为矩阵一;从矢量矩阵<img file="A2005100217750005C4.GIF" wi="60" he="53" />中不重复地任意取出N×W行,作为矩阵一的N×W行,在矢量矩阵<img file="A2005100217750005C5.GIF" wi="59" he="53" />中取出的排在前面的行在矩阵一中仍然排在前面;再构造一个行数为N×W、列数为W×R/(1-R)的矩阵,命名为矩阵二;从矩阵一中不重复地任意取出除最后两列以外的W×R/(1-R)列,作为矩阵二的W×R/(1-R)列,在矩阵一中取出的排在前面的列在矩阵二中仍然排在前面;矩阵二就是循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750005C6.GIF" wi="30" he="53" />,其行数为N×W,列数为W×R/(1-R);循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750005C7.GIF" wi="29" he="52" />由<img file="A2005100217750005C8.GIF" wi="22" he="53" />至<img file="A2005100217750005C9.GIF" wi="98" he="54" />这些元素构成;最后,将循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C1.GIF" wi="30" he="53" />转换为二进制有限域上的稀疏矩阵:二进制有限域上的稀疏矩阵就是指矩阵中的所有元素为‘0’或者‘1’,且‘1’的个数远远小于‘0’的个数;将循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C2.GIF" wi="29" he="49" />中的元素<img file="A2005100217750006C3.GIF" wi="21" he="49" />用维数为N的向量{1  0…0  0}来替换,该向量的第一个元素为1,其余N-1个元素全为0;将循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C4.GIF" wi="29" he="50" />中的元素<img file="A2005100217750006C5.GIF" wi="22" he="50" />用维数为N的向量{0  1…0  0}来替换,该向量的第二个元素为1,其余N-1个元素全为0;依次进行,将循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C6.GIF" wi="30" he="51" />中的元素<img file="A2005100217750006C7.GIF" wi="98" he="52" />用维数为N的向量{0  0…1  0}来替换,该向量的第N-1个元素为1,其余N-1个元素全为0;将循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C8.GIF" wi="30" he="51" />中的元素<img file="A2005100217750006C9.GIF" wi="22" he="52" />用维数为N的向量{0  0…0  1}来替换,该向量的第N个元素为1,其余N-1个元素全为0;经过这些操作,原来的循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C10.GIF" wi="29" he="52" />中的元素被替换成了向量,因此,新的循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C11.GIF" wi="30" he="49" />的元素为‘0’或者‘1’,这个新的循环移位、去零阵、倒序处理、截取后的有限域矢量矩阵<img file="A2005100217750006C12.GIF" wi="29" he="49" />即是构造的校验矩阵H的子矩阵P;步骤2,构造子矩阵D构造一个行数和列数都等于N×W的方阵,令该方阵的主对角线和与主对角线相邻的下对角线上的元素全为‘1’,其余元素全为‘0’,就可以得到校验矩阵H的子矩阵D:<img file="A2005100217750006C13.GIF" wi="596" he="444" />步骤3,构造校验矩阵H将构造好的校验矩阵H的两个子矩阵P和D按下式组合:H=[P  D]就可以得到校验矩阵H;步骤4,按照以下方法构造编码后的非正则LDPC码字首先,构造出子矩阵D的逆矩阵L:构造一个行数和列数都等于N×W的方阵,令该方阵的对角线以下的元素全为‘1’,其余元素全为‘0’,于是得到了子矩阵D的逆矩阵L:<img file="A2005100217750007C1.GIF" wi="544" he="438" />然后,生成非正则LDPC码的校验元部分:输入已知的编码器的信息μ,它的元素为‘0’或者‘1’,它的行数为N×W×R/(1-R),列数为1;则LDPC码的校验元部分η的计算公式为:η=L×(P×μ)得到的非正则LDPC码的校验元部分η的行数为N×W,列数为1;最后,生成编码后的非正则LDPC码:将输入的编码器的信息μ和由上面计算得到的校验元部分η按下式组合:<maths num="007"><![CDATA[ <math><mrow><mi>c</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>&mu;</mi></mtd></mtr><mtr><mtd><mi>&eta;</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>就得到了输出的非正则LDPC码字c,c的行数为N×W/(1-R),列数为1。
地址 610054四川省成都市建设北路二段四号