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

LDPC 软判决算法之似然比形式 (一)

2022-08-25 00:17 作者:乐吧的数学  | 我要投稿

本系列文章列表:

LDPC低密度奇偶校验码的比特翻转译码浅析

LDPC 低密度奇偶校验码的软判决译码算法浅析(一)

LDPC 低密度奇偶校验码的软判决译码算法浅析(二)--降低运算量

LDPC 低密度奇偶校验码的软判决译码算法浅析(三)--算法和代码

LDPC 软判决算法之似然比形式 (一)

LDPC 软判决算法之似然比形式 (二)--算法和代码

LDPC 软判决算法之似然比形式 (三) tanh-lambda 规则

引入 Tanner 图

-----------------------------------------------------


在前面的文章中,我们推导了 LDPC 软判决译码的迭代算法,这篇文章,我们用对数比的形式,再推导一下 LDPC 的迭代算法。

(录制的视频在:https://www.bilibili.com/video/BV1JV4y1W7Yq/


本文参考了文献[1] 的 15.5.6 章节。

为了判决各个发送比特,我们可以用后验概率比值取对数来评估,即:

%5Clambda(c_n%7Cr)%20%3D%20log%5Cfrac%7Bp(c_n%3D1%7Cr)%7D%7Bp(c_n%3D0%7Cr)%7D%20%20%5Cquad%20%20------%20%5Cquad%20%20%E5%85%AC%E5%BC%8F(1)


如果这个比值大于 0 , 则把 比特 n 判决为 1,否则判决为 0.
下面我们来推导上面公式的递推表达式。

我们先对公式(1)中的分子进行推导:

p(c_n%3D1%7Cr)%20%3D%20p(c_n%3D1%7Cr_n%2C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(c_n%20%3D%201%2C%20%20r_n%20%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(%20r_n%20%7C%20c_n%20%3D%201%2C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20p(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(%20r_n%20%7C%20c_n%20%3D%201%20)%20p(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D


其中用到了:

p(%20r_n%20%7C%20c_n%20%3D%201%2C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%3D%20%20p(%20r_n%20%7C%20c_n%20%3D%201%20)%20


同理,对公式(1)中的分母部分进行推导:

p(c_n%3D0%7Cr)%20%3D%20p(c_n%3D0%7Cr_n%2C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(c_n%20%3D%200%2C%20%20r_n%20%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(%20r_n%20%7C%20c_n%20%3D%200%2C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20p(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%5C%5C%0A%3D%5Cfrac%7B%20%20p(%20r_n%20%7C%20c_n%20%3D%200)%20p(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%20%20%7B%20p(r_n%20%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%7D%20%20%5C%5C


则公式 (1) 可以 推导为

%5Clambda(c_n%7Cr)%20%3D%20log%20%5Cfrac%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20p(%20r_n%20%7C%20c_n%20%3D%201)%20p(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20p(%20r_n%20%7C%20c_n%20%3D%200)%20p(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D%20%20%5C%5C%0A%20%20%20%20%20%3Dlog%20%5Cfrac%20%7Bp(%20r_n%20%7C%20c_n%20%3D%201)%20%7D%20%7B%20p(%20r_n%20%7C%20c_n%20%3D%200)%7D%20%20%2B%0A%20%20%20%20%20%20log%20%5Cfrac%7Bp(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%7D%7Bp(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20%7D


其中

log%20%5Cfrac%20%7Bp(%20r_n%20%7C%20c_n%20%3D%201)%20%7D%20%7B%20p(%20r_n%20%7C%20c_n%20%3D%200)%7D


这一部分是可以根据信道的特点(例如加性高斯白噪声信道)以及调制方式,可以容易计算出来。如果是 BPSK(1-->1, 0-->-1) 调制,经过加性高斯白噪声信道,则

log%20%5Cfrac%20%7Bp(%20r_n%20%7C%20c_n%20%3D%201)%20%7D%20%7B%20p(%20r_n%20%7C%20c_n%20%3D%200)%7D%20%3D%20log%20%5Cfrac%7Bexp(-(r_n-1)%5E2%2F(2%5Csigma%5E2))%7D%7Bexp(-(r_n%2B1)%5E2%2F(2%5Csigma%5E2))%7D%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_n


而第二部分

log%20%5Cfrac%7Bp(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%7D


把校验方程的约束,考虑进来,对于 c_n%3D1 的情况,c_n 参与的那些校验方程要想成立,则每个校验方程中,除了 c_n 这个比特外,其余的比特加起来应该等于 1;同理,对于 c_n%3D0 的情况,c_n 参与的那些校验方程要想成立,则每个校验方程中,除了 c_n 这个比特外,其余的比特加起来应该等于 0. 为了行文的方便,我们引入一个记号:

z_%7Bm%2Cn%7D%20%3D%20%5Csum_%7Bi%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20c_i


那么 c_n%3D1,就可以表示为 c_n 参与的那些校验方程,每个校验方程里面的其它比特之和为 1,即 %5C%7Bz_%7Bm%2Cn%7D%3D1%5C%7D; 同理,c_n%3D0,就可以表示为 c_n 参与的那些校验方程,每个校验方程里面的其它比特之和为 0,即 %20%5C%7Bz_%7Bm%2Cn%7D%3D0%5C%7D,那么:
log%20%5Cfrac%7Bp(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%7D%20%3D%20log%20%5Cfrac%0A%7Bp(%5C%7Bz_%7Bm%2Cn%7D%3D1%5C%7D%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%7D%0A%7Bp(%5C%7Bz_%7Bm%2Cn%7D%3D0%5C%7D%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%7D%5Cquad%20----%20%5Cquad%20%E5%85%AC%E5%BC%8F(2)


这里需要做一个假设近似,即 c_n 参与的校验方程,相互之间独立,即这些校验方程中,除了有共同的比特 c_n 外,其它比特没有相同的。当然,这个假设在一般情况下都是不成立的,这里假定成立,或者近似成立(只有相同的比特数不是很多),在这个假设情况下,上面公式右边的分子和分母部分,又可以拆成多个概率的乘积:

p(%5C%7Bz_%7Bm%2Cn%7D%3D1%5C%7D%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%3D%20%5Cprod_m%20p(z_%7Bm%2Cn%7D%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)


同理,

p(%5C%7Bz_%7Bm%2Cn%7D%3D0%5C%7D%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D%20)%20%3D%20%5Cprod_m%20p(z_%7Bm%2Cn%7D%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)


则公式 (2) 变成:
log%20%5Cfrac%7Bp(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%7D%20%3D%20log%20%5Cprod_m%20%5Cfrac%7Bp(z_%7Bm%2Cn%7D%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(z_%7Bm%2Cn%7D%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%0A%3D%0A%5Csum_m%20log%5Cfrac%7Bp(z_%7Bm%2Cn%7D%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(z_%7Bm%2Cn%7D%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D

根据公式 (1),

log%5Cfrac%7Bp(z_%7Bm%2Cn%7D%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(z_%7Bm%2Cn%7D%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D


可以记为 %20%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)

log%20%5Cfrac%7Bp(c_n%3D1%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7Bp(c_n%3D0%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%7D%20%3D%20%5Csum_m%20%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)


则把上面的推导的结果,代入公式 (1),我们可以看到:

%5Clambda(c_n%7Cr)%20%3D%20log%5Cfrac%7Bp(c_n%3D1%7Cr)%7D%7Bp(c_n%3D0%7Cr)%7D%20%3D%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_n%20%2B%20%5Csum_m%20%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%5Cquad%20----%5Cquad%20%E5%85%AC%E5%BC%8F(3)


这里面的思想,比特%20c_n 的对数比 %5Clambda(c_n)%20,可以用校验方程成立的某种比值(在 c_n%3D1c_n%3D0两个条件下,校验方程成立的概率的比值)来表示。即,校验方程成立的概率,可以用来估算比特取值的概率。我们举个例子来进一步理解上面的结果。

假设 LDPC 用的校验矩阵如下,本篇文章都是以这个校验矩阵为例子。


A%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%201%26%201%20%26%201%20%26%200%20%26%200%20%26%201%20%26%201%20%26%200%20%26%200%20%26%201%5C%5C%0A%20%201%26%200%20%26%201%20%26%200%20%26%201%20%26%201%20%26%200%20%26%201%20%26%201%20%26%200%5C%5C%0A%20%200%26%200%20%26%201%20%26%201%20%26%201%20%26%200%20%26%201%20%26%200%20%26%201%20%26%201%5C%5C%0A%20%200%26%201%20%26%200%20%26%201%20%26%201%20%26%201%20%26%200%20%26%201%20%26%200%20%26%201%5C%5C%0A%20%201%26%201%20%26%200%20%26%201%20%26%200%20%26%200%20%26%201%20%26%201%20%26%201%20%26%200%0A%5Cend%7Bbmatrix%7D



我们译码出来的码字表示成向量形式:
c%3D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%26%20c_2%20%26%20c_3%20%26%20c_4%20%26%20c_5%20%26%20c_6%20%26%20c_7%20%20%26%20c_8%20%26%20c_9%20%26%20c_%7B10%7D%0A%5Cend%7Bbmatrix%7D

这个译码出来的码字,不是指发送的正确的码字,是表示我们待译码出来的,例如,我们可能想评估  c1=1 的可能性(概率)。

我们把接收到的数据表示为一个向量:
r%3D%5Cbegin%7Bbmatrix%7D%0A%20%20r_1%20%26%20r_2%20%26%20r_3%20%26%20r_4%20%26%20r_5%20%26%20r_6%20%26%20r_7%20%20%26%20r_8%20%26%20r_9%20%26%20r_%7B10%7D%0A%5Cend%7Bbmatrix%7D


根据线性分组码相关的原理,我们知道有如下的校验方程:
z%20%3D%20c%20A%5ET


计算后的结果 z ,是一个含有5个元素的向量,记为:
z%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%20z_1%26%20z_2%20%26%20z_3%20%26%20z_4%20%26%20z_5%0A%5Cend%7Bbmatrix%7D


为了易于理解,我们把上面这个矩阵形式的方程,展开成 5 个校验方程:
%5Cbegin%7Beqnarray%7D%0Az_1%20%26%3D%20c_1%20%2B%20c_2%20%2B%20c_3%20%2B%20c_6%20%2B%20c_7%20%2B%20c_%7B10%7D%20%5C%5C%0Az_2%20%26%3D%20c_1%20%2B%20c_3%20%2B%20c_5%20%2B%20c_6%20%2B%20c_8%20%2B%20c_%7B9%7D%20%5C%5C%0Az_3%20%26%3D%20c_3%20%2B%20c_4%20%2B%20c_5%20%2B%20c_7%20%2B%20c_9%20%2B%20c_%7B10%7D%20%5C%5C%0Az_4%20%26%3D%20c_2%20%2B%20c_4%20%2B%20c_5%20%2B%20c_6%20%2B%20c_8%20%2B%20c_%7B10%7D%20%5C%5C%0Az_5%20%26%3D%20c_1%20%2B%20c_2%20%2B%20c_4%20%2B%20c_7%20%2B%20c_8%20%2B%20c_%7B9%7D%0A%5Cend%7Beqnarray%7D


咱们考虑正在译码 c_2 这个比特,我们需要计算如下这个概率比值的对数:

%5Clambda(c_2%7Cr)%20%3D%20log%5Cfrac%7Bp(c_2%3D1%7Cr)%7D%7Bp(c_2%3D0%7Cr)%7D%3D%20log%5Cfrac%7Bp(c_2%3D1%7Cr_2%2Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%7Bp(c_2%3D0%7Cr_2%2Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D


根据公式 (3):

%5Clambda(c_2%7Cr)%20%3D%20log%5Cfrac%7Bp(c_2%3D1%7Cr)%7D%7Bp(c_2%3D0%7Cr)%7D%3D%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_2%20%2B%20%20%5Csum_m%20%5Clambda(z_%7Bm%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)


c_2 参与的校验方程有 z_1%2Cz_4%2Cz_5 这三个,所以

%5Csum_%7Bm%7D%20%5Clambda(z_%7Bm%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%3D%20%5Csum_%7Bm%20%5Cin%5C%7B1%2C4%2C5%5C%7D%7D%20%5Clambda(z_%7Bm%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%5C%5C%0A%3D%20%5Clambda(z_%7B1%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%2B%20%5Clambda(z_%7B4%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%2B%20%5Clambda(z_%7B5%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)


因为第一个校验方程的比特有1,2,3,6,7,10,去掉比特 2 后还有 1,3,6,7,10,所以

%5Clambda(z_%7B1%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%3D%20%5Clambda(c_1%2Bc_3%2Bc_6%2Bc_7%2Bc_%7B10%7D%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%20%5C%5C%0A%3D%20log%20%5Cfrac%0A%7Bp(c_1%2Bc_3%2Bc_6%2Bc_7%2Bc_%7B10%7D%3D1%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%0A%7Bp(c_1%2Bc_3%2Bc_6%2Bc_7%2Bc_%7B10%7D%3D0%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D


同理:

%5Clambda(z_%7B4%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%3D%20log%20%5Cfrac%0A%20%20%20%20%7Bp(c_4%2Bc_5%2Bc_6%2Bc_8%2Bc_%7B10%7D%3D1%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%0A%20%20%20%20%7Bp(c_4%2Bc_5%2Bc_6%2Bc_8%2Bc_%7B10%7D%3D0%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%20%20%20%5C%5C%0A%5Clambda(z_%7B5%2C2%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%3D%20log%20%5Cfrac%0A%20%20%20%20%7Bp(c_1%2Bc_4%2Bc_7%2Bc_8%2Bc_9%3D1%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%0A%20%20%20%20%7Bp(c_1%2Bc_4%2Bc_7%2Bc_8%2Bc_9%3D0%7Cr_1%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D)%7D%20%20%20


从例子中,也可以看出来有用校验方程成立的概率,来估算待译码比特的概率比值的对数,从而可以用来判决这个待译码的比特。

至此,我们第一阶段的推导已经结束,即用校验方程的某种概率来估计待译码比特的某种概率。

--------------------------------------------  第二段  --------------------------

我们来看公式 (3) 中右边求和公式里面的表达式

%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)


根据 %5Clambda 函数的定义,写成概率比值的对数形式:

%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%3D%20log%20%5Cfrac%20%20%7Bp(z_%7Bm%2Cn%7D%3D1%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%20%20%20%7Bp(z_%7Bm%2Cn%7D%3D0%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D


再把 z_%7Bm%2Cn%7D 的定义代进去:

%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%3D%20log%20%5Cfrac%20%20%7Bp(z_%7Bm%2Cn%7D%3D1%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%20%20%20%7Bp(z_%7Bm%2Cn%7D%3D0%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%20%5C%5C%0A%3Dlog%20%5Cfrac%20%20%7Bp((%5Csum_%7Bi%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20c_i)%3D1%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%20%20%20%7Bp((%5Csum_%7Bi%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20c_i)%3D0%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D


这是其具体含义。我们直接把  z_%7Bm%2Cn%7D 的定义代入到 %5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)  有:

%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%3D%20%5Clambda((%5Csum_%7Bj%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20c_j)%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%5Cquad%20------%5Cquad%20%E5%85%AC%E5%BC%8F(4)


根据 tanh rule 定理(这个在附录中推导),这个公式是定理,其中用到的变量,与上面的推导无关,其中 x_i是 取值 0/1 的二值随机变量:

%5Clambda(x_1%20%5Coplus%20x_2%20%5Coplus%20x_3%20%5Coplus%20%5Ccdots%20%5Coplus%20x_n)%20%3D%20%202%20tanh%5E%7B-1%7D(%0Atanh(-%5Cfrac%7B%5Clambda(x_1)%7D%7B2%7D)%0Atanh(-%5Cfrac%7B%5Clambda(x_2)%7D%7B2%7D)%0Atanh(-%5Cfrac%7B%5Clambda(x_3)%7D%7B2%7D)%0A%5Ccdots%0Atanh(-%5Cfrac%7B%5Clambda(x_n)%7D%7B2%7D)%0A)%0A%5C%5C%0A%3D%0A-2%20tanh%5E%7B-1%7D(%5Cprod_i%20tanh(-%5Cfrac%7B%5Clambda(x_i)%7D%7B2%7D))


把这个定理应用到公式 (4)

%5Clambda(z_%7Bm%2Cn%7D%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%3D%20%5Clambda((%5Csum_%7Bj%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20c_j)%7C%20%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%5C%5C%0A%3D%20-%202%20tanh%5E%7B-1%7D(%5Cprod_%7Bj%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20tanh(-%5Cfrac%7B%5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7B2%7D))


我们为了区分,引入一个新的符号,对上面公式右边,用一个新的符号来表示:

%5Ceta_%7Bm%2Cn%7D%3D-%202%20tanh%5E%7B-1%7D(%5Cprod_%7Bj%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20tanh(-%5Cfrac%7B%5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%7D%7B2%7D))%20%5Cquad%20-----%5Cquad%20%E5%85%AC%E5%BC%8F(5)


这个 %5Ceta_%7Bm%2Cn%7D,可以理解为第 m 个校验方程成立的某种度量,是用 cn=1 和 cn=0 两种情况下的校验方程成立的概率做比较来实现的一种度量,总之,这是衡量校验方程成立的一个量。而这个量中,即公式(5) 中的 %5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D),又是 比特 j 的一种概率度量。在具体算法实现时,令其等于  %5Clambda(c_j%7Cr_j)

则公式 (3) 变成:
%5Clambda(c_n%7Cr)%20%3D%20log%5Cfrac%7Bp(c_n%3D1%7Cr)%7D%7Bp(c_n%3D0%7Cr)%7D%20%3D%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_n%20%2B%20%5Csum_m%20%5Ceta_%7Bm%2Cn%7D%5Cquad%20----%5Cquad%20%E5%85%AC%E5%BC%8F(6)


公式 (6) 和公式 (5) 一起构成了一种循环迭代。



------------------------------ 至此完成了一轮计算。我们继续举个例子来说明:

假如正在译码 c2 这个比特,即  n=2,c2 参与的校验方程有 z1,z4,z5  这三个,我们考虑来计算第四个校验方程成立的度量,即 m=4,计算 %5Ceta_%7B4%2C2%7D.

第四个校验方程,参与的比特有2,4,5,6,8,10 这六个比特。则公式 (5) 就是:

%0A%5Ceta_%7B4%2C2%7D%3D-%202%20tanh%5E%7B-1%7D(%5Cprod_%7Bj%20%5Cin%20%5C%7B4%2C5%2C6%2C8%2C10%5C%7D%20%7D%20tanh(-%5Cfrac%7B%5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D))%0A


为了计算出来上个公式,我们需要知道 :

%5Clambda(c_4%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%20%5C%5C%0A%5Clambda(c_5%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%20%5C%5C%0A%5Clambda(c_6%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%20%5C%5C%0A%5Clambda(c_8%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%20%20%5C%5C%0A%5Clambda(c_%7B10%7D%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)

在第一轮时,直接用各自的自然比来计算:

%5Clambda(c_4%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%3D%5Clambda(c_4%7Cr_4)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_4%20%20%5C%5C%0A%5Clambda(c_5%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%3D%5Clambda(c_5%7Cr_5)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_5%20%20%20%5C%5C%0A%5Clambda(c_6%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%3D%5Clambda(c_6%7Cr_6)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_6%20%20%20%5C%5C%0A%5Clambda(c_8%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%3D%5Clambda(c_8%7Cr_8)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_8%20%20%20%5C%5C%0A%5Clambda(c_%7B10%7D%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%3D%5Clambda(c_%7B10%7D%7Cr_%7B10%7D)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_%7B10%7D


这样就可以计算出来 %5Ceta_%7B4%2C2%7D:

%5Ceta_%7B4%2C2%7D%3D-%202%20tanh%5E%7B-1%7D(%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_4%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D)tanh(-%5Cfrac%7B%5Clambda(c_5%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D)tanh(-%5Cfrac%7B%5Clambda(c_6%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D)%20%5C%5Ctanh(-%5Cfrac%7B%5Clambda(c_8%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D)tanh(-%5Cfrac%7B%5Clambda(c_%7B10%7D%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D)%5C%5C%0A)


用类似的方法,可以把所有的%5Ceta_%7Bm%2Cn%7D 都计算出来。

c_2 参与的校验方程有 z_1%2Cz_4%2Cz_5  这三个,则:

%5Clambda(c_2%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_n%20%2B%20%20%5Ceta_%7B1%2C2%7D%2B%5Ceta_%7B4%2C2%7D%2B%5Ceta_%7B5%2C2%7D


同理,可以计算出所有的 %5Clambda(c_i%7Cr).  做一次判决。

---------------------例子结束



这个时候,把  %5Clambda(c_j%7Cr_j)都做一次判决,如果满足检验结果正确,则结束。否则,我们有理由用新估计出来的  %5Clambda(c_j%7Cr_j) 来进一步强化对校验方程成立的度量的准确性,则 %5Ceta_%7Bm%2Cn%7D  这个需要被更新。

在这个更新中,因为上一轮的 %5Clambda(c_j%7Cr_j) 的计算中,是包含了第 m 个校验方程的度量的信息的,所以,为了更新第 m 个校验方程的信息,则需要把 上一轮的 %5Clambda(c_j%7Cr_j)减掉 上一轮的 %5Ceta_%7Bm%2Cn%7D,则这个更新公式为:

%5Clambda%5E%7B%5Bl%5D%7D(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20%3D%20%5Clambda%5E%7B%5Bl-1%5D%7D(c_j%7Cr)%20-%5Ceta_%7Bm%2Cj%7D%5E%7B%5Bl-1%5D%7D


代入公式(5) 有:

%5Ceta_%7Bm%2Cn%7D%5E%7B%5Bl%5D%7D%3D-%202%20tanh%5E%7B-1%7D(%5Cprod_%7Bj%20%5Cin%20N_%7Bm%2Cn%7D%20%7D%20tanh(-%5Cfrac%7B%5Clambda%5E%7B%5Bl-1%5D%7D(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%20n%5C%7D)%20-%5Ceta_%7Bm%2Cj%7D%5E%7B%5Bl-1%5D%7D%7D%7B2%7D))


------------我们继续用例子来说明一下

接着前面的例子,我们现在已经有了新的  %5Clambda(c_i%7Cr),这是新的对比特取值的一种概率度量,现在用这个度量去更新对校验方程成立与否的度量。例如我们要更新这个:

%5Ceta_%7B4%2C2%7D%3D-%202%20tanh%5E%7B-1%7D(%5Cprod_%7Bj%20%5Cin%20%5C%7B4%2C5%2C6%2C8%2C10%5C%7D%20%7D%20tanh(-%5Cfrac%7B%5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D)%7D%7B2%7D))


需要注意的是,因为 %5Clambda(c_j%7C%5C%7Br_i%2Ci%20%5Cneq%202%5C%7D) 中都用了 第四个校验方程的信息,我们现在的目的又为了计算第四个校验方程的度量信息,因此避免这种自循环的问题,需要从中都拿掉 %5Ceta_%7B4%2C*%7D的影响。

%5Clambda(c_4%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_4%20%2B%20%20%5Ceta_%7B3%2C4%7D%2B%5Ceta_%7B4%2C4%7D%2B%5Ceta_%7B5%2C4%7D%20%20%5C%5C%0A%5Clambda(c_5%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_5%20%2B%20%20%5Ceta_%7B2%2C5%7D%2B%5Ceta_%7B3%2C5%7D%2B%5Ceta_%7B4%2C5%7D%20%20%5C%5C%0A%5Clambda(c_6%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_6%20%2B%20%20%5Ceta_%7B1%2C6%7D%2B%5Ceta_%7B2%2C6%7D%2B%5Ceta_%7B4%2C6%7D%20%20%5C%5C%0A%5Clambda(c_8%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_8%20%2B%20%20%5Ceta_%7B2%2C8%7D%2B%5Ceta_%7B4%2C8%7D%2B%5Ceta_%7B5%2C8%7D%20%20%5C%5C%0A%5Clambda(c_%7B10%7D%7Cr)%20%3D%20%5Cfrac%7B2%7D%7B%5Csigma%5E2%7Dr_%7B10%7D%20%2B%20%20%5Ceta_%7B1%2C10%7D%2B%5Ceta_%7B3%2C10%7D%2B%5Ceta_%7B4%2C10%7D


即在以上公式中依次分别拿掉:%5Ceta_%7B4%2C4%7D%2C%5Ceta_%7B4%2C5%7D%2C%5Ceta_%7B4%2C6%7D%2C%5Ceta_%7B4%2C8%7D%2C%5Ceta_%7B4%2C10%7D, 然后,再送到  %5Ceta_%7B4%2C2%7D  的计算公式中

%5Ceta_%7B4%2C2%7D%3D-%202%20tanh%5E%7B-1%7D(%20%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_4%7Cr)-%5Ceta_%7B4%2C4%7D%5E%7Blast%7D%7D%7B2%7D)*%20%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_5%7Cr)-%5Ceta_%7B4%2C5%7D%5E%7Blast%7D%7D%7B2%7D)*%20%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_6%7Cr)-%5Ceta_%7B4%2C6%7D%5E%7Blast%7D%7D%7B2%7D)*%20%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_8%7Cr)-%5Ceta_%7B4%2C8%7D%5E%7Blast%7D%7D%7B2%7D)*%20%5C%5C%0Atanh(-%5Cfrac%7B%5Clambda(c_%7B10%7D%7Cr)-%5Ceta_%7B4%2C10%7D%5E%7Blast%7D%7D%7B2%7D)%0A%5C%5C)



------------例子结束





整体示意流程图如下:




[1]  Error Correction Coding--Mathematical Methods and Algorithms , Todd K. Moon, Wiley, 2005 ,主要参考第 15.5 章节。



LDPC 软判决算法之似然比形式 (一)的评论 (共 条)

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