关于LDPC码的译码的文章非常多,也非常详细。对其编码也有描述,由于LDPC码设计是先找到检验矩阵H,编码是由H求生成矩阵,使得其编码比其他编码有所不同。一个比较细微的,且通常不注意的问题是在从H求G的过程中,要对H进行行列置换。进行行置换后,译码时可直接使用原H矩阵,但进行列置换后,不能直接使用原H矩阵,原因如下:
要点:1. H矩阵是一个稀疏矩阵,行矢量码C满足C*H'=0(H‘为H的转置),也就是C位于H的零空间,对H的行进行置换得U, 而行置换后仍有C*U=0,即行置换后U的零空间与H的零空间一样。
2. H矩阵进行列置换,相当于用置换矩阵P右乘H,即V=H*P,这时,要使C*V’=C*(H*P)‘
=C*P'*H'=0,相当于对行矢量码C进行列置换为C1=C*P’。
3. LDPC码不是直接给出生成矩阵G,而是给出的校验矩阵H。其通用编码算法中,要通过H求生成矩阵G,要通过适当的行列置换得到恰当形式的G。依据上述1中的描述,H矩阵的行置换不改变码空间,进行校验时可直接使用最初始的H,而列置换后一般不能直接使用最初始的H,而要使用H*P进行校验,也就是进行译码。由于只对H进行了列置换,并不影响检验矩阵的稀疏性。