欢迎光临散文网 会员登陆 & 注册

基于快速傅里叶变换的多元LDPC译码算法FFT-QSPA

2022-10-04 17:18 作者:乐吧的数学  | 我要投稿

这个文章讲解一下多元 LDPC 码的一种译码算法:基于 FFT 的译码算法。

所谓的多元,是指参与运算的数据不是比特,而是有更多的取值,例如取值0,1,2,3,或者例如取值01,2,3,4,5 等等。 校验矩阵的系数也是可以取值不只是 0 和 1 ,例如下面这个校验矩阵,是以模 4 运算为基础的校验矩阵,也就是很多教科书中称之为有限域 %5Cmathbb%7BF%7D_4, 当然涉及到很多高等代数的知识,但是,在这里,就都理解为模 4 的运算即可,无论加减乘,最后的结果都模 4 运算即可。
H%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%26%20%200%26%20%201%26%200%20%26%201%20%26%203%5C%5C%0A%20%202%26%202%20%26%200%20%26%202%20%26%200%20%26%201%5C%5C%0A%20%200%26%201%20%26%203%20%26%203%20%26%203%20%26%200%0A%5Cend%7Bbmatrix%7D%0A


所以,这里面有三个校验方程,收到 6 个数(记为r_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6 ),LDPC 编码后的数据有六个,记为 c_1%2Cc_2%2Cc_3%2Cc_4%2Cc_5%2Cc_6, 三个校验方程可以写为:

z_1%3A%20c_1%20%2B%20c_3%20%2B%20c_5%20%2B%203c_6%20%20%3D0%20%20%5C%5C%0Az_2%3A%202c_1%20%2B%202c_2%20%2B%202c_4%20%2B%20c_6%20%3D%200%20%20%5C%5C%0Az_3%3A%20c_2%20%2B%203c_3%20%2B%203c_4%20%2B%203%20c_5%20%20%3D%200


特别提醒,上面的运算都是在模 4 的规则下的,计算的结果都需要做模 4 运算。

本来最优的译码方法是找 p(%7Bc_1%2Cc_2%2Cc_3%2Cc_4%2Cc_5%2Cc_6%7D%7C%5C%7Bz_m%3D0%5C%7D%2Cr) 中概率最大的,把概率最大时对应的 c_1%2Cc_2%2Cc_3%2Cc_4%2Cc_5%2Cc_6 作为我们的译码结果。但是,这个运算量大,当码长较长时,运算量大到不可行。我们退而求其次,计算单个c_i 的概率来做判决:

p(c_i%7C%5C%7Bz_m%3D0%5C%7D%2Cr)


我们把上面的公式做一些进一步的推导:

p(c_i%7C%5C%7Bz_m%3D0%5C%7D%2Cr)%20%3D%20%5Cfrac%7Bp(c_i%2C%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%20%3D%20%20%5Cfrac%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cc_i%2Cr)p(c_i%7Cr)%7D%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%5Cquad%20--%E5%85%AC%E5%BC%8F(1)


其中,p(c_i%7Cr)%20%3D%20p(c_i%7Cr_i)(因为这个条件中没有约束方程的要求,因此,其他的 r_j%2C%20j%5Cneq%20i 就不影响 c_i.

 公式 (1) 中,我们为了简化运算,我们假设各个校验方程的成立与否,是相互独立的,当然,实际上由于每个发送的数据c_i,都参与多个校验方程,因此,校验方程之间是有相互关联的,这里的假设,导致了一个约等于:

p(%5C%7Bz_m%3D0%5C%7D%7Cc_i%2Cr)%20%5Capprox%20p(%5C%7Bz_1%3D0%5C%7D%7Cc_i%2Cr)%20p(z_2%3D0%7Cc_i%2Cr)....%20%3D%20%5Cprod_m%20p(z_m%3D0%7Cc_i%2Cr)%20%20%5Cquad%20---%20%E5%85%AC%E5%BC%8F(2)


我们举个例子,例如 在开头的校验方程中,我们考虑译码 c_2

p(c_2%3D3%7C%5C%7Bz_1%3D0%2Cz_2%3D0%2Cz_3%3D0%5C%7D%2Cr_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6)%20%3D%20%5C%5C%5Cfrac%7B1%7D%7Bp(%5C%7Bz_1%3D0%2Cz_2%3D0%2Cz_3%3D0%5C%7D%7Cr_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6)%7D%20p(c_2%3D3%7Cr_2)%20p(%5C%7Bz_1%3D0%2Cz_2%3D0%2Cz_3%3D0%5C%7D%7Cc_2%3D3%2Cr_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6)%20%5C%5C%0A%5Capprox%20p(%5C%7Bz_1%3D0%2Cz_2%3D0%2Cz_3%3D0%5C%7D%7Cr_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6)%20p(c_2%3D3%7Cr_2)%20p(z1%3D0%7Cr)p(z2%3D0%7Cr)p(z3%3D0%7Cr)


现在,我们已经用校验方程成立与否的概率,来表示了发送数据的概率。

接着对公式 (2) 中的 p(z_m%3D0%7Cc_i%2Cr) 进行一些推导:

p(z_m%3D0%7Cc_i%2Cr)%20%3D%20%5Cfrac%7Bp(z_m%3D0%2Cc_i%7Cr)%7D%7Bp(c_i%7Cr)%7D%20%3D%20%5Cfrac%7Bp(z_m%3D0%2Cc_i%7Cr)%7D%7Bp(c_i%7Cr_i)%7D%20%5Cquad%20---%20%E5%85%AC%E5%BC%8F(3)


其中 p(c_i%7Cr_i) ,可以认为是一个常数,我们来分析分子的部分, 因为 %20c_i 给定,那么 z_m%3D0 的话,就意味着校验方程中其他项要取各种情况

p(z_m%3D0%2Cc_i%7Cr)%3D%20%5Csum_%7Bh_ic_i%2B%5Csum_%7Bk%5Cneq%20i%7Dh_kc_k%3D0%7D%20p(%5C%7Bc_j%5C%7D%7Cr)%20%5Cquad%20---%E5%85%AC%E5%BC%8F(4)


其中

p(%5C%7Bc_j%5C%7D%7Cr)%20%3D%20%5Cprod_%7Bj%5Cneq%20i%7D%20p(c_j%7Cr_j)


则公式 (4) 变成:

p(z_m%3D0%2Cc_i%7Cr)%3D%20%5Csum_%7Bh_ic_i%2B%5Csum_%7Bk%5Cneq%20i%7Dh_kc_k%3D0%7D%20%5Cprod_%7Bj%5Cneq%20i%7D%20p(c_j%7Cr_j)%20%5Cquad%20---%E5%85%AC%E5%BC%8F(5)


我们举个例子,例如校验方程 %20z_2, 以 c_2%3D3 为例子

p(z_2%3D0%2Cc_2%3D3%7Cr)%20%3D%20p(2c_1%20%2B%202c_2%20%2B%202c_4%20%2B%20c_6%20%3D%200%2C%20c_2%3D3%20%7C%20r)%20%3D%20p(2c_1%20%2B%206%20%2B%202c_4%20%2B%20c_6%20%3D%200)%20%5C%5C%0A%3D%20p(2c_1%20%2B%202%20%2B%202c_4%20%2B%20c_6%20%3D%200%7Cr)

则有下列一些情况:

c_1%3D0%2Cc_4%3D0%2Cc_6%20%3D%202%20%5C%5C%0Ac_1%3D0%2Cc_4%3D1%2Cc_6%20%3D%200%20%5C%5C%0Ac_1%3D0%2Cc_4%3D2%2Cc_6%20%3D%202%20%5C%5C%0Ac_1%3D0%2Cc_4%3D3%2Cc_6%20%3D%200%20%5C%5C%0A...%20%20%5C%5C%0Ac_1%3D3%2Cc_4%3D0%2Cc_6%20%3D%200%20%5C%5C%0Ac_1%3D3%2Cc_4%3D1%2Cc_6%20%3D%202%20%5C%5C%0Ac_1%3D3%2Cc_4%3D2%2Cc_6%20%3D%200%20%5C%5C%0Ac_1%3D3%2Cc_4%3D3%2Cc_6%20%3D%202


针对上面任何一种情况,例如
p(c_1%3D3%2Cc_4%3D1%2Cc_6%20%3D%202%7Cr)%20%3D%20p(c_1%3D3%7Cr_1)p(c_4%3D1%7Cr_4)p(c_6%20%3D%202%7Cr_6)

从上面的举例中也可以看出,计算公式 (4) 是非常复杂的,运算量非常大。而且,我们还需要计算 c_2 等于其他三种值(0,1,2)的情况,可见,公式(4) 和公式 (5)  的计算量之大。

这里,引入一种在模 4 这种操作下的傅里叶变换,这里我们不做严格的证明,只是把这个思想和过程梳理一下,理解了这是在干啥,后面可以查阅更专业的书籍和文献,来看严格的证明。

我们举一个二元码的例子,即取值只有 0 和 1, 有两个随机变量,x_1%2C%20x_2,令:

p(x_1%3D0)%20%3D%20p_1%20%20%5C%5C%0Ap(x_2%3D0)%20%3D%20p_2


如果我们要计算:

%5Csum_%7Bx_1%2Bx_2%3D0%7D%20p(x_1)p(x_2)%20%20%5Cquad%20---%E5%85%AC%E5%BC%8F(6)

%5Csum_%7Bx_1%2Bx_2%3D1%7D%20p(x_1)p(x_2)%20%20%5Cquad%20---%E5%85%AC%E5%BC%8F(7)


那么公式 (6) 可以展开为:

p(x_1%3D0)p(x_2%3D0)%20%2B%20p(x_1%3D1)p(x_2%3D1)%20%3D%20p_1%20p_2%20%2B%20(1-p_1)(1-p_2)%20%3D%201%20%2B%202%20p_1%20p_2%20-%20p_1%20-%20p_2%20%20---%20%E5%85%AC%E5%BC%8F(8)


公式(7) 可以展开为:
p(x_1%3D0)p(x_2%3D1)%20%2B%20p(x_1%3D1)p(x_2%3D0)%20%3D%20p_1%20(1-p_2)%20%2B%20(1-p_1)%20p_2%20%3D%20p_1%20%2B%20p_2%20-%202%20p_1%20p_2%20---%E5%85%AC%E5%BC%8F(9)


对于这种二元的情况,我们引入一种变换:
%0AH_1%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%5C%5C%0A%20%201%26%20-1%0A%5Cend%7Bbmatrix%7D


因为是二元的情况,所以,这个变换是对某个随机变量的两种取值的概率的变换,对 x_1%3D0%2C%20x_1%3D1  做变换:
%0AH_1%20%5Cbegin%7Bbmatrix%7D%0A%20%20p_1%5C%5C%0A%20%201-p_1%0A%5Cend%7Bbmatrix%7D%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%20p_1-(1-p_1)%0A%5Cend%7Bbmatrix%7D%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%202p_1-1%0A%5Cend%7Bbmatrix%7D


对 x_2%3D0%2Cx_2%3D1  做变换

%0AH_1%20%5Cbegin%7Bbmatrix%7D%0A%20%20p_2%5C%5C%0A%20%201-p_2%0A%5Cend%7Bbmatrix%7D%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%20p_2-(1-p_2)%0A%5Cend%7Bbmatrix%7D%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%202p_2-1%0A%5Cend%7Bbmatrix%7D


对上面两种变换之后的结果,即两个列向量,做对应元素相乘:

%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%202p_1-1%0A%5Cend%7Bbmatrix%7D%20%5Ctimes_%7B%E5%AF%B9%E5%BA%94%E5%85%83%E7%B4%A0%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%202p_2-1%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%20(2p_1-1)(2p_2-1)%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%204p_1%20p_2%20-%202p_1%20-%202%20p_2%20%2B%201%0A%5Cend%7Bbmatrix%7D


对上面的结果,我们再引入一个变换:
H_1%5E%7B-1%7D%20%3D%20%5Cfrac%7B1%7D%7B2%7D%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%5C%5C%0A%20%201%26%20-1%0A%5Cend%7Bbmatrix%7D

则:
%0AH_1%5E%7B-1%7D%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%204p_1%20p_2%20-%202p_1%20-%202%20p_2%20%2B%201%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cfrac%7B1%7D%7B2%7D%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%5C%5C%0A%20%201%26%20-1%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%5C%5C%0A%20%204p_1%20p_2%20-%202p_1%20-%202%20p_2%20%2B%201%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%2B2p_1p_2-p_1-p_2%5C%5C%0A%20%20p_1%20%2B%20p_2%20-%202%20p_1%20p_2%0A%5Cend%7Bbmatrix%7D

可以看到,上面这个结果,刚好就是公式(7)(8) 的结果,上面结果的向量中,元素1是公式(7)的结果,元素2是公式(8) 的结果。

这里,我们得到了一个新的方法:

先对
%0A%5Cbegin%7Bbmatrix%7D%0A%20%20p(x_1%3D0)%5C%5C%0A%20%20p(x_1%3D1)%0A%5Cend%7Bbmatrix%7D


%5Cbegin%7Bbmatrix%7D%0A%20%20p(x_2%3D0)%5C%5C%0A%20%20p(x_2%3D1)%0A%5Cend%7Bbmatrix%7D

做 H_1 变换,分别得到一个向量,然后再对两个向量中对应元素相乘,得到一个向量,最后对这个向量做 H_1%5E%7B-1%7D 的变换。


对公式 (5) 中,我们需要 考虑 h_ic_i%2B%5Csum_%7Bk%5Cneq%20i%7Dh_kc_k%3D0 ,我们把 h_j%20x_j 的结果,记为 c_j%5Ep   其中上标 p 表示 permutation(置换) 的意思,实际上就是 取了一个值 c_j ,通过乘以 h_j, 就可以计算出一个 c_j%5Ep , 然后,公式(5) 中求和项的下标,就可以表示为:

c_i%5Ep%20%2B%20%5Csum_%7Bk%20%5Cneq%20i%7D%20c_k%5Ep%3D%200


 则,公式(5) 可以写成:

p(z_m%3D0%2Cc_i%5Ep%7Cr)%20%3D%20%5Csum_%7Bc_i%5Ep%2B%5Csum_%7Bk%5Cneq%20i%7Dc_k%5Ep%3D0%7D%20%5Cprod_%7Bj%5Cneq%20i%7D%20p(c_j%5Ep%7Cr_j)


我们暂时先忽略上标 p ,假如 公式 (5) 是如:

p(z_m%3D0%2Cc_i%7Cr)%20%3D%20%5Csum_%7Bc_i%2B%5Csum_%7Bk%5Cneq%20i%7Dc_k%3D0%7D%20%5Cprod_%7Bj%5Cneq%20i%7D%20p(c_j%7Cr_j)%20%5Cquad%20---%E5%85%AC%E5%BC%8F(5.1)
那么,我们可以用类似于二元 情况的,引入变换域算法。





我们来看一下公式 (5),其中
p(z_m%3D0%2Cc_i%7Cr)

有四种情况(以模 4 为例子):

p(z_m%3D0%2Cc_i%3D0%7Cr)%20%5C%5C%0Ap(z_m%3D0%2Cc_i%3D1%7Cr)%20%5C%5C%0Ap(z_m%3D0%2Cc_i%3D2%7Cr)%20%5C%5C%0Ap(z_m%3D0%2Cc_i%3D3%7Cr)


假如看 z_3 这个校验方程,则 c_2%20%2B%203c_3%20%2B%203c_4%20%2B%203%20c_5%20%20%3D%200, 那么 c_2 有四种取值,根据公式(5), 我们需要计算的概率有:
p(z_3%3D0%2Cc_2%3D0%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D1%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D2%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D3%7Cr)可以写成一个向量:
p_%7Bz_3%7D%3D%5Cbegin%7Bbmatrix%7D%0Ap(z_3%3D0%2Cc_2%3D0%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D1%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D2%7Cr)%20%5C%5C%0Ap(z_3%3D0%2Cc_2%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D%20%5Cquad%20---%E5%85%AC%E5%BC%8F(10)


我们另外三个向量:
p_%7Bc_3%7D%3D%5Cbegin%7Bbmatrix%7D%0Ap(c_3%3D0%7Cr)%20%5C%5C%0Ap(c_3%3D1%7Cr)%20%5C%5C%0Ap(c_3%3D2%7Cr)%20%5C%5C%0Ap(c_3%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D


p_%7Bc_4%7D%3D%5Cbegin%7Bbmatrix%7D%0Ap(c_4%3D0%7Cr)%20%5C%5C%0Ap(c_4%3D1%7Cr)%20%5C%5C%0Ap(c_4%3D2%7Cr)%20%5C%5C%0Ap(c_4%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D

p_%7Bc_5%7D%3D%5Cbegin%7Bbmatrix%7D%0Ap(c_5%3D0%7Cr)%20%5C%5C%0Ap(c_5%3D1%7Cr)%20%5C%5C%0Ap(c_5%3D2%7Cr)%20%5C%5C%0Ap(c_5%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D


对上面三个向量分别做 H_2变换, H_2 由 H_1 计算得来:
H_2%20%3D%0A%5Cbegin%7Bbmatrix%7D%0AH_1%20%26%20H_1%20%5C%5C%0AH_1%20%26%20-H_1%0A%5Cend%7Bbmatrix%7D


则:
%0AP_%7Bc_3%7D%3DH_2p_%7Bc_3%7D%20%3D%20%20%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%20%20%26%20%201%261%5C%5C%0A%20%201%26%20-1%20%26%20%201%26-1%20%5C%5C%0A%20%201%26%201%20%20%26%20%20-1%26-1%5C%5C%0A%20%201%26%20-1%20%26%20%20-1%261%20%5C%5C%0A%20%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ap(c_3%3D0%7Cr)%20%5C%5C%0Ap(c_3%3D1%7Cr)%20%5C%5C%0Ap(c_3%3D2%7Cr)%20%5C%5C%0Ap(c_3%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0AP_%7Bc_3%7D%5E%7B(1)%7D%5C%5C%0AP_%7Bc_3%7D%5E%7B(2)%7D%20%5C%5C%0AP_%7Bc_3%7D%5E%7B(3)%7D%20%5C%5C%0AP_%7Bc_3%7D%5E%7B(4)%7D%0A%5Cend%7Bbmatrix%7D

同理:
%0AP_%7Bc_4%7D%3DH_2p_%7Bc_4%7D%20%3D%20%20%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%20%20%26%20%201%261%5C%5C%0A%20%201%26%20-1%20%26%20%201%26-1%20%5C%5C%0A%20%201%26%201%20%20%26%20%20-1%26-1%5C%5C%0A%20%201%26%20-1%20%26%20%20-1%261%20%5C%5C%0A%20%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ap(c_4%3D0%7Cr)%20%5C%5C%0Ap(c_4%3D1%7Cr)%20%5C%5C%0Ap(c_4%3D2%7Cr)%20%5C%5C%0Ap(c_4%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0AP_%7Bc_4%7D%5E%7B(1)%7D%5C%5C%0AP_%7Bc_4%7D%5E%7B(2)%7D%20%5C%5C%0AP_%7Bc_4%7D%5E%7B(3)%7D%20%5C%5C%0AP_%7Bc_4%7D%5E%7B(4)%7D%0A%5Cend%7Bbmatrix%7D
%0AP_%7Bc_5%7D%3DH_2p_%7Bc_5%7D%20%3D%20%20%0A%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%20%20%26%20%201%261%5C%5C%0A%20%201%26%20-1%20%26%20%201%26-1%20%5C%5C%0A%20%201%26%201%20%20%26%20%20-1%26-1%5C%5C%0A%20%201%26%20-1%20%26%20%20-1%261%20%5C%5C%0A%20%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ap(c_5%3D0%7Cr)%20%5C%5C%0Ap(c_5%3D1%7Cr)%20%5C%5C%0Ap(c_5%3D2%7Cr)%20%5C%5C%0Ap(c_5%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0AP_%7Bc_5%7D%5E%7B(1)%7D%5C%5C%0AP_%7Bc_5%7D%5E%7B(2)%7D%20%5C%5C%0AP_%7Bc_5%7D%5E%7B(3)%7D%20%5C%5C%0AP_%7Bc_5%7D%5E%7B(4)%7D%0A%5Cend%7Bbmatrix%7D
然后,把三个向量P_%7Bc_3%7D%2C%20P_%7Bc_4%7D%2C%20P_%7Bc_5%7D 做对应的元素相乘

%0AP_%7Bc_%7B345%7D%7D%20%3DP_%7Bc_3%7D%20%5Ctimes_%7B%E5%AF%B9%E5%BA%94%E5%85%83%E7%B4%A0%7D%5Ctimes_%7B%E5%AF%B9%E5%BA%94%E5%85%83%E7%B4%A0%7DP_%7Bc_4%7D%5C%0A%5Ctimes_%7B%E5%AF%B9%E5%BA%94%E5%85%83%E7%B4%A0%7D%20P_%7Bc_5%7D%20%5C%5C%0A%5Cbegin%7Bbmatrix%7D%0AP_%7Bc_3%7D%5E%7B(1)%7DP_%7Bc_4%7D%5E%7B(1)%7DP_%7Bc_5%7D%5E%7B(1)%7D%20%5C%5C%0AP_%7Bc_3%7D%5E%7B(2)%7DP_%7Bc_4%7D%5E%7B(2)%7DP_%7Bc_5%7D%5E%7B(2)%7D%20%5C%5C%0AP_%7Bc_3%7D%5E%7B(3)%7DP_%7Bc_4%7D%5E%7B(3)%7DP_%7Bc_5%7D%5E%7B(3)%7D%20%5C%5C%0AP_%7Bc_3%7D%5E%7B(4)%7DP_%7Bc_4%7D%5E%7B(4)%7DP_%7Bc_5%7D%5E%7B(4)%7D%0A%5Cend%7Bbmatrix%7D

再对上式的结果做 H_2%5E%7B-1%7D  变换,其中:
%0AH_2%5E%7B-1%7D%20%3D%5Cfrac%7B1%7D%7B4%7D%20H_2%20%3D%20%5Cfrac%7B1%7D%7B4%7D%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%20%20%26%20%201%261%5C%5C%0A%20%201%26%20-1%20%26%20%201%26-1%20%5C%5C%0A%20%201%26%201%20%20%26%20%20-1%26-1%5C%5C%0A%20%201%26%20-1%20%26%20%20-1%261%20%5C%5C%0A%20%0A%5Cend%7Bbmatrix%7D

那么:
H_2%5E%7B-1%7D%20P_%7Bc_%7B345%7D%7D


就是公式(10) 的结果,也就是公式 (5) 的结果,因为 H_2 这个变换,是模 4 域里面的变换,可以用快速傅里叶变换的算法,降低运算量。


公式(11)(12)(13) 都是一种变换,从一个域变换到另外一个域,这里应该理解为在模 4 运算下的傅里叶变换,然后可以用快速傅里叶变换,快速傅里叶变换的算法如下:

对公式(11)

P_%7Bc_3%7D%3DH_2p_%7Bc_3%7D%20%20%3D%20H_2%20%5Cbegin%7Bbmatrix%7D%0Ap(c_3%3D0%7Cr)%20%5C%5C%0Ap(c_3%3D1%7Cr)%20%5C%5C%0Ap(c_3%3D2%7Cr)%20%5C%5C%0Ap(c_3%3D3%7Cr)%0A%5Cend%7Bbmatrix%7D%20%5C%5C%0A%3Dp_%7Bc_3%7D%20%5Ctimes_0%20F%20%5Ctimes_1%20F%20


如果是2%5Es 元的 LDPC 码,则这个变换就是
FFT(u)%20%3D%20u%20%5Ctimes_0%20F%20%5Ctimes_1%20F%20%5Ctimes%20...%20%5Ctimes_%7Bs-1%7D%20F
其中

F%20%3D%20%5Cbegin%7Bbmatrix%7D%0A1%20%26%201%20%5C%5C%0A1%20%26%20-1%0A%5Cend%7Bbmatrix%7D


则一个 s 维向量 %5Ba_0%2Ca_1%2Ca_2%2C...%2Ca_%7Bs-1%7D%5D , 则

w%20%3D%20u%20%5Cotimes_l%20F 按照如下公式计算:

w(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C0%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)%20%3D%20u(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C0%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)%20%2B%20%5C%5C%0Au(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C1%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)

w(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C1%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)%20%3D%20u(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C0%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)%20-%20%5C%5C%0Au(a_0%2Ca_1%2C...%2Ca_%7Bl-1%7D%2C1%2Ca_%7Bl%2B1%7D%2C...%2Ca_%7Bs-1%7D)


我们举个例子来说明,假如我们要分析的是 8 元 LDPC 码,则每个数据有 3 个比特,我们把一个数据记为 c , 是由 3 个比特组成的数据,取值范围从 0 到 7.  这八种取值,都对应一个概率,8 个概率组成一个向量:

u%20%3D%5Cbegin%7Bbmatrix%7D%0Ap(c%3D000)%20%5C%5C%0Ap(c%3D001)%20%5C%5C%0Ap(c%3D010)%20%5C%5C%0Ap(c%3D011)%20%5C%5C%0Ap(c%3D100)%20%5C%5C%0Ap(c%3D101)%20%5C%5C%0Ap(c%3D110)%20%5C%5C%0Ap(c%3D111)%0A%5Cend%7Bbmatrix%7D


 那么 u%20%5Ctimes_0%20F的结果还是一个 8 维的向量,其结果为:

u_1%3D%5Cbegin%7Bbmatrix%7D%0Ap(c%3D000)%20%2B%20p(c%3D100)%20%5C%5C%0Ap(c%3D001)%20%2B%20p(c%3D101)%20%5C%5C%0Ap(c%3D010)%20%2B%20p(c%3D110)%20%5C%5C%0Ap(c%3D011)%20%2B%20p(c%3D111)%20%5C%5C%0Ap(c%3D000)%20-%20p(c%3D100)%20%5C%5C%0Ap(c%3D001)%20-%20p(c%3D101)%20%5C%5C%0Ap(c%3D010)%20-%20p(c%3D110)%20%5C%5C%0Ap(c%3D011)%20-%20p(c%3D111)%20%5C%5C%0A%0A%5Cend%7Bbmatrix%7D


然后 u_1%20%5Ctimes_1%20F%20

u_2%3D%5Cbegin%7Bbmatrix%7D%0Au_1(000)%20%2B%20u_1(010)%20%5C%5C%0Au_1(001)%20%2B%20u_1(011)%20%5C%5C%0Au_1(000)%20-%20u_1(010)%20%5C%5C%0Au_1(001)%20-%20u_1(011)%20%5C%5C%0Au_1(100)%20%2B%20u_1(110)%20%5C%5C%0Au_1(101)%20%2B%20u_1(111)%20%5C%5C%0Au_1(100)%20-%20u_1(110)%20%5C%5C%0Au_1(101)%20-%20u_1(111)%20%5C%5C%0A%0A%5Cend%7Bbmatrix%7D


最后 u_2%20%5Ctimes_2%20F

u_3%3D%5Cbegin%7Bbmatrix%7D%0Au_2(000)%20%2B%20u_2(100)%20%5C%5C%0Au_2(000)%20-%20u_2(001)%20%5C%5C%0Au_2(010)%20%2B%20u_2(011)%20%5C%5C%0Au_2(010)%20-%20u_2(011)%20%5C%5C%0Au_2(100)%20%2B%20u_2(101)%20%5C%5C%0Au_2(100)%20-%20u_2(101)%20%5C%5C%0Au_2(110)%20%2B%20u_2(111)%20%5C%5C%0Au_2(110)%20-%20u_2(111)%20%5C%5C%0A%0A%5Cend%7Bbmatrix%7D


则 u_3 就是变换后的最终结果。


参考文献: 《多元 LDPC 码及其应用》 赵山程  马啸  白宝明著

基于快速傅里叶变换的多元LDPC译码算法FFT-QSPA的评论 (共 条)

分享到微博请遵守国家法律