我有802.16 e标准的奇偶校验表H
,速率为1/2
,扩展因子为96
:
Hb =
-1 94 73 -1 -1 -1 -1 -1 55 83 -1 -1 7 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 27 -1 -1 -1 22 79 9 -1 -1 -1 12 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 24 22 81 -1 33 -1 -1 -1 0 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1
61 -1 47 -1 -1 -1 -1 -1 65 25 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1
-1 -1 39 -1 -1 -1 84 -1 -1 41 72 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 46 40 -1 82 -1 -1 -1 79 0 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1
-1 -1 95 53 -1 -1 -1 -1 -1 14 18 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1
-1 11 73 -1 -1 -1 2 -1 -1 47 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1
12 -1 -1 -1 83 24 -1 43 -1 -1 -1 51 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1
-1 -1 -1 -1 -1 94 -1 59 -1 -1 70 72 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1
-1 -1 7 65 -1 -1 -1 -1 39 49 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
43 -1 -1 -1 -1 66 -1 41 -1 -1 -1 26 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0
然后我得到H
的二进制形式,大小为1152x2304
:spy(H) img
我想从H
得到一个矩阵生成器G
,我该怎么做?我需要通过将单词乘以生成器矩阵(cw = m*G
,其中m
-输入单词,cw
-码字)来编码单词。
我尝试了不同的方法,但最后我不能达到nnz(mod(G*H', 2))
等于0
。
1条答案
按热度按时间des4xlb01#
一个老问题,但我有相同的,并设计了一个解决方案.
该LDPC码是系统的,即码字包含信息比特,并且信息比特是码字的前导比特。所有的计算都是在
GF2
(Galois域的大小为2)中进行的。让我们表示:
n
码字长度(以及H
和G
的列数),m
奇偶校验位的数目(以及H
的行数),k=n-m
信息比特的数目(以及G
的行数),[A,B]
通过从左到右连接两个子矩阵A
和B
而形成的矩阵(当A
和B
具有相同的行数时),A^
矩阵A
的转置矩阵,Ip
大小为p
的单位矩阵,0p
大小为p
的零向量,inv(A)
是方阵A
的逆矩阵。如果
u
是要编码的k
比特字(信息比特),x
是对应的n
比特码字,由于该码与前导信息比特是系统的,我们有:其中
F
是k
-行,m
-列矩阵。我们也可以将奇偶校验矩阵H
表示为H = [A,B]
,其中A
是m
-行,k
-列矩阵,B
是m
-行,m
-列(正方形)矩阵。事实上,B
不是单数(它有一个逆)。所以:它来自哪里(我们在
GF2
):因此:
一个octave代码,从
H
计算G
(其中H
已经在GF2
中),并检查G * H^ = 0
(Matlab代码应该非常相似):