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

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

2022-05-25 11:11 作者:乐吧的数学  | 我要投稿

本系列文章列表:

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

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

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

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

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

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

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

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


本篇文章目的是简单易懂地介绍 LDPC 码的软判决译码。本人在开始学习 LDPC码时遇到最大的困惑是软判决译码中 “消息传播”  ,很多书一上来就给出 “消息传播” 算法的具体描述,可为什么 “消息传播” 算法是那个流程,为什么能起作用?其背后有原理(数学原理)支撑吗?鲜有耐心详细的说明的,幸好,我挖掘到一本书 [1],介绍得比较好,本文就是以这本书的内容为蓝本写就的.

本人在哔站上录制了一个视频,做了简单讲解:

https://www.bilibili.com/video/BV1AT411u7WJ/


在读者已经了解线性分组码的基本概念,以及校验矩阵的基础上,有概率方面的基本知识,就可以读懂本篇文章。建议读者在阅读本篇文章前,阅读一下本人写的关于比特翻转译码算法,可以领会一下背后的思想,对理解本篇文章有帮助。当然,不阅读比特翻转译码算法的文章,也完全可以理解本篇文章。



假设 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


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

我们把接收到的数据表示为一个向量:
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


特别说明一下,这里讲的接收的数据,并不是已经硬判决出来的 0 或者 1 ,而是通过信道传输过来后的小数。发送端发送的是 0 或者 1 ,但是,由于信道噪声的干扰,收到的数据是各种可能,从负无穷到正无穷都是有可能的,只是越偏离原始发送的数据则可能性越小而已,假如发送的是 1,则收到是 105.7 的可能性要比收到 1.1 的可能性要小得多。例如,可能收到的数据如下:
%5Cbegin%7Baligned%7D%0Ar%26%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%20%20%20%0A%5Cend%7Bbmatrix%7D%0A%5C%5C%0A%26%3D%5B-0.63%5Cquad%20-0.81%5Cquad%20-0.73%5Cquad%20-0.04%5Cquad%200.1%5Cquad%200.95%5Cquad%20-0.76%5Cquad%200.66%5Cquad%20-0.55%5Cquad%200.58%5D%0A%5Cend%7Baligned%7D


根据信道的特点,例如是高斯白噪声信道,我们根据接收到的上面的那些小数,可以计算出一个后验概率,例如,可以计算出:在收到 r_1%3D-0.63 的条件下,c_1%3D0 的概率,写成概率公式为:

p(c_1%3D1%7Cr1%3D-0.63)


用 p(c_1%7Cr_1) 表示这种后验概率。

如果我们直接用这个后验概率来判决 c_1%3D0 还是 %20c_1%3D1,则没有利用码字内部各个比特之间是有关联的,那就没有使用编码带来的好处。

那么,有哪些关联的性质呢?即有哪些约束条件的?

根据线性分组码相关的原理,我们知道有如下的校验方程:
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

如果译码正确,则所有的方程都是等于 0 的。如果不是正确的码字,则上面的校验方程中至少有一个是不等于 0 的。

由于软判决没有直接判决出码字,然后来检验校验方程是否满足。使用软信息,咱们来判断各个校验方程成立的概率,然后有了各个方程是否成立的概率,来计算码字中各个比特 c_i 等于 0 或者等于 1 的概率。



咱们一点点来推导。

咱们知道,最佳译码是找下面这个概率最大的:
p(%5C%7Bc_i%5C%7D%7C%5C%7Bz_m%3D0%5C%7D%2Cr)

说明:%5C%7Bz_m%3D0%5C%7D  是 所有的校验方程都成立的意思。

例如:在满足校验方程和收到的数据为 r 的条件下
c%20%3D%20%5B0%20%5Cquad%200%20%5Cquad%200%5Cquad%201%5Cquad%200%20%5Cquad%201%20%5Cquad%200%20%5Cquad%201%20%5Cquad%200%20%5Cquad%201%5D
则可以计算概率
p(c%20%3D%20%5B0%20%5Cquad%200%20%5Cquad%200%5Cquad%201%5Cquad%200%20%5Cquad%201%20%5Cquad%200%20%5Cquad%201%20%5Cquad%200%20%5Cquad%201%5D%20%7C%5C%7Bz_1%3D0%2Cz_2%3D0%2Cz_3%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%2C%5C%7Br_1%2Cr_2%2Cr_3%2Cr_4%2Cr_5%2Cr_6%2Cr_7%2Cr_8%2Cr_9%2Cr_%7B10%7D%5C%7D)


注意:上面公式中 r 是含有 10 个元素的向量,是接收到的数据。

那么,把所有满足校验方程的 c 都计算一遍上式的概率,在这些概率中选择最大的那个作为译码结果。

缺点:如果分组码中每个组中数据比特数量是 k, 编码后的长度为 n (例如上面例子中 k= 5, n = 10),则需要计算 2%5Ek 个概率出来,对于分组码长度为几百这种量级的,则这个计算量非常非常大,完全不可行。因此,需要一种折中的快速算法。

第一种折中,咱们先按照单个比特最优的角度来开始,咱们求解下面的概率:
p(c_i%3Dx%7C%5C%7Bz_m%3D0%5C%7D%2Cr)


对于二进制的传输数据,上面公式中的 x 要么取 0,要么取 1.

咱们对上面的公式进行一些推导,推导成这个概率是用 z_m%3D0 的概率来表示,即用校验方程成立的概率来表达对这个比特等于 0 或者 1 的概率。
%5Cbegin%7Balign%7D%0Ap(c_i%3Dx%7C%5C%7Bz_m%3D0%5C%7D%2Cr)%20%26%3D%5Cfrac%7Bp(c_i%3Dx%2C%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%3D%5Cfrac%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cc_i%3Dx%2Cr)p(c_i%3Dx%7Cr)%7D%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cr)%7D%0A%5Cend%7Balign%7D
上面的公式中,分母的部分是与c_i%3Dx 无关的项,可以认为是一个常数。

 对分子中的两项,做进一步的简化(其实是一种近似)

第一:  令 p(c_i%3Dx%7Cr)%20%3D%20p(c_i%3Dx%7Cr_i) 即假设接收到的其它的数据(除了 r_i 以外的)不影响 c_i%3Dx 的判决,这当然是一种简化,因为考虑校验方程的约束,其它数据的取值,对当前 c_i%3Dx的判断是可以给出更多信息的。这个概率,已经与 LDPC 码无关了,只由信道的特点决定。(有网友认为这里不是近似,因为校验方程的条件,在公式推导过程中已经被拿掉了,好像也有道理,我写在这里,大家自己来多思考一下吧)

第二:假设 %20c_i 参与的校验方程,在 c_i%3Dx 以及收到 r 的条件下,各个校验方程是独立的,统计上独立的。这个只有在这些校验方程中,除了 c_i 以外,没有其它共同参与的比特 的情况下才成立。在实际的 LDPC 码的校验矩阵中,是无法保证的。因此,这个也是一种简化。 在这个假设的条件下,分子中的项可以展开为:

p(%5C%7Bz_m%3D0%5C%7D%7Cc_i%3Dx%2Cr)%20%3D%20%5Cprod_m%20p(z_m%3D0%7Cc_i%3Dx%2Cr)
那么:
%5Cbegin%7Balign%7D%0Ap(c_i%3Dx%7C%5C%7Bz_m%3D0%5C%7D%2Cr)%20%26%3D%5Cfrac%7B1%7D%7Bp(%5C%7Bz_m%3D0%5C%7D%7Cr)%7Dp(c_i%3Dx%7Cr_i)%5Cprod_m%20p(z_m%3D0%7Cc_i%3Dx%2Cr)-------%E5%85%AC%E5%BC%8F(0)%0A%5Cend%7Balign%7D


至此,我们已经走到了一个比较重要的步骤,或者说得到了一个比较重要的思想:

用校验方程成立的概率,来表达或者说来计算 c_i%3D0 的概率。这个与比特翻转算法的思想有点类似,再比特翻转算法中,校验方程不成立的个数,决定了参与这些校验方程的比特的出错的可能性。参与到错误校验方程的个数越多,这个比特出错的可能性越大。在上面的公式中,也可以看到这个思想的影子。校验方程成立的可能性越大,则可以看出来 c_i%3D0 的可能性就越大。

咱们举个例子来理解上面这个公式,在前面的 LDPC 码校验方程中,咱们考虑正在估计 c_2%3D0 的概率,c_2 参与的校验方程有 z_1%2Cz_4%2Cz_5  这三个。

则估计 c_2%3D0 的概率可以表示成:

%5Cbegin%7Balign%7D%0Ap(c_2%3D0%7C%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%2Cr)%20%26%3D%5Cfrac%7Bp(c_2%3D0%2C%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%7Cr)%7D%7Bp(%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%7Cr)%7D%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%3D%5Cfrac%7Bp(%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%7Cc_2%3D0%2Cr)p(c_2%3D0%7Cr)%7D%7Bp(%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%7Cr)%7D%0A%5Cend%7Balign%7D


而上面式子中分子部分的左边第一个概率,在假设 z_1%2Cz_4%2Cz_5 相互独立的假设下,又可以展开为三个概率的乘积:

p(%5C%7Bz_1%3D0%2Cz_4%3D0%2Cz_5%3D0%5C%7D%7Cc_2%3D0%2Cr)%20%3D%20p(z_1%3D0%7Cc_2%3D0%2Cr)*p(z_4%3D0%7Cc_2%3D0%2Cr)*p(z_5%3D0%7Cc_2%3D0%2Cr)

                                                        -------- 例子公式(1)

=========================================================

如果至此都理解了,咱们可以开始往下推导了。现在来看如何判断校验方程成立的概率呢?即
p(z_m%3D0%7Cc_i%3Dx%2Cr)

这个怎么计算呢?或者说如何估计呢?

咱们来解读一下上面这个公式,这个公式是估计z_m%3D0 成立的概率,也就是这个第 m 个校验方程成立的可能性。我们可以很自然地理解,这个概率肯定与 z_m 检验方程中包含的比特有关,又由于前面的公式是一个条件概率,其中一个条件是 c_i%3Dx ,这个是确定的。因此,评估上面这个概率,就只需要考虑这个校验方程含有的比特,除了 c_i 以外的那些比特。

下面,咱们做一些公式的推导,把其它参与的比特考虑进来:

首先用全概率公式:
p(z_m%3D0%7Cc_i%3Dx%2Cr)%20%3D%20%5Csum_%7Bx%5E%7B'%7D%7D%20p(z_m%3D0%2C%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%7Cc_n%3Dx%2Cr)%20%5C%5C%0A%3D%20%5Csum_%7Bx%5E%7B'%7D%7D%20p(z_m%3D0%7Cc_n%3Dx%2C%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%2Cr)p(%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%7Cr)%20%5C%5C%0A-------------%20%20%E5%85%AC%E5%BC%8F(1)


对上面  "例子公式(1)"  右边的三个概率,分别都使用全概率公式展开。现在对第一个( p(z_1%3D0%7Cc_2%3D0%2Cr)) 展开作为例子来说明。z_1 这个校验方程,除了 c_2 参与了之外,还有 c_1%2Cc_3%2Cc_6%2Cc_7%2Cc_%7B10%7D  这 5 个比特参与,现在对这 5 个比特的取值进行全排列,每个取 0 或者 1,则有 2%5E5%3D32 种情况:

%0A%5Cbegin%7Balign%7D%0A%20%26p(z_1%3D0%7Cc_2%3D0%2Cr)%20%3D%5C%5C%0A%20%26p(z_1%3D0%7Cc_2%3D0%2C%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D0%5C%7D%2Cr)p(%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D0%5C%7D%7Cr)%20%2B%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26p(z_1%3D0%7Cc_2%3D0%2C%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%5C%7D%2Cr)p(%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%5C%7D%7Cr)%20%2B%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26p(z_1%3D0%7Cc_2%3D0%2C%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D1%5C%7D%2Cr)p(%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%5C%7D%7Cr)%20%2B%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26p(z_1%3D0%7Cc_2%3D0%2C%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D1%2Cc_7%3D0%2Cc_%7B10%7D%3D0%5C%7D%2Cr)p(%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%5C%7D%7Cr)%20%2B%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%5Cdots%20%5Cdots%20%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26p(z_1%3D0%7Cc_2%3D0%2C%5C%7Bc_1%3D1%2Cc_3%3D1%2Cc_6%3D1%2Cc_7%3D1%2Cc_%7B10%7D%3D1%5C%7D%2Cr)p(%5C%7Bc_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%5C%7D%7Cr)%20%20%0A%5Cend%7Balign%7D

从上面举的例子容易看出来,在 c_2%3D0 的条件下,要求 z_1%3D0,则可以看到上面的 2%5E5%3D32 中情况中并不是都成立,只有 c_1%2Cc_3%2Cc_6%2Cc_7%2Cc_%7B10%7D  这 5 个比特中有偶数个 1 才成立。

另外,公式(1) 中的 %20p(z_m%3D0%7Cc_n%3Dx%2C%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%2Cr),在所有 c_i 确定的情况下,z_m%3D0 已经与 r 无关,因此:

%20p(z_m%3D0%7Cc_n%3Dx%2C%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%2Cr)%20%3D%20p(z_m%3D0%7Cc_n%3Dx%2C%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%20


因此公式(1)可以写成:
p(z_m%3D0%7Cc_i%3Dx%2Cr)%20%3D%20%5Csum_%7Bx%5E%7B'%7D%E7%9A%84%E5%92%8C%E4%B8%BAx%7D%20p(%5C%7Bc_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%5C%7D%7Cr)----------%E5%85%AC%E5%BC%8F(2)
补充说明一下上面这个公式:其中的 n%5E%7B'%7D 是取 z_m 这个校验方程中参与的比特,除了c_i。 如在例子中第一个校验方程 z_1,参与的比特有 c_1%2Cc_2%2Cc_3%2Cc_6%2Cc_7%2Cc_%7B10%7D ,假如 c_ic_2,且 x=0,即 c_2%3D0,那么 n%5E%7B'%7D 的取值就是%5C%7B1%2C3%2C6%2C7%2C10%5C%7D. 则上面公式的右边,需要考虑的就是 %5C%7B%20c_1%3Dx_1%5E%7B'%7D%2Cc_3%3Dx_3%5E%7B'%7D%2Cc_6%3Dx_6%5E%7B'%7D%2Cc_7%3Dx_7%5E%7B'%7D%2Cc_%7B10%7D%3Dx_%7B10%7D%5E%7B'%7D%5C%7D 然后,这 5 个比特的取值,就是要满足 0%3Dx_1%5E%7B'%7D%2Bx_3%5E%7B'%7D%2Bx_6%5E%7B'%7D%2Bx_7%5E%7B'%7D%2Bx_%7B10%7D%5E%7B'%7D. 那么,上面的公式就可以展开为:

%0A%5Cbegin%7Baligned%7D%0Ap(z_1%3D0%7Cc_2%3D0%2Cr)%20%3D%26%20p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D0%2Cc_6%3D1%2Cc_7%3D0%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D1%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D1%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D1%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D1%2Cc_6%3D1%2Cc_7%3D0%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D1%2Cc_7%3D0%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D1%2Cc_7%3D1%2Cc_%7B10%7D%3D0%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D0%2Cc_3%3D1%2Cc_6%3D1%2Cc_7%3D1%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D0%2Cc_6%3D1%2Cc_7%3D1%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D1%2Cc_6%3D0%2Cc_7%3D1%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D1%2Cc_6%3D1%2Cc_7%3D0%2Cc_%7B10%7D%3D1%7Cr)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20p(c_1%3D1%2Cc_3%3D1%2Cc_6%3D1%2Cc_7%3D1%2Cc_%7B10%7D%3D0%7Cr)%20%20%5C%5C%0A%5Cend%7Baligned%7D

为了进一步简化,对公式 (2) 又做了一个假设,即 %5C%7Bc_%7Bn%5E%7B'%7D%7D%5C%7D  相互独立,则公式(2) 就可以变为:
p(z_m%3D0%7Cc_i%3Dx%2Cr)%20%3D%20%5Csum_%7Bx%5E%7B'%7D%E7%9A%84%E5%92%8C%E4%B8%BAx%7D%20%5Cprod_%7B%5C%7Bn%5E%7B'%7D%5C%7D%7D%20p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr)----------%E5%85%AC%E5%BC%8F(3)

对上面例子中的 p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D0%7Cr) ,假设 c_1%2Cc_3%2Cc_7%2Cc_%7B10%7D 相互独立,则:

p(c_1%3D0%2Cc_3%3D0%2Cc_6%3D0%2Cc_7%3D0%2Cc_%7B10%7D%3D0%7Cr)%20%3D%20p(c_1%3D0%7Cr)p(c_3%3D0%7Cr)p(c_6%3D0%7Cr)p(c_7%3D0%7Cr)p(c_%7B10%7D%3D0%7Cr)

至此,公式(3) 中的  p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr)  可以用 p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr_%7Bn%5E%7B'%7D%7D) 来代替,显然这里也是用了一个近似,则公式(3) 就可以计算出来,然后代入公式 (0) ,就可以计算出 p(c_i%3Dx%7C%5C%7Bz_m%3D0%5C%7D%2Cr)  此时就可以对比特 c_i 进行判决:

%E5%A6%82%E6%9E%9C%5Cquad%20p(c_i%3D0%7C%5C%7Bz_m%3D0%5C%7D%2Cr)%20%3E%200.5%EF%BC%8C%E5%88%99%5Cquad%20c_i%3D0%2C%5Cquad%20%E5%90%A6%E5%88%99%5Cquad%20c_i%3D1

那么对所有的 c_i,都做一遍上面的流程,则 c_1%2C%5Cdots%2Cc_%7B10%7D 就都判决出来了。因为,上面的计算中用了几个假设和简化,这次判决出来的结果代入校验方程,可能不是所有的校验方程都成立。那么,我们要采取一些办法,来再做一次尝试。如果还是按照上面的流程做一遍,那还是会得到相同的结果,我们自然可以想:能否利用上一轮估计出来的某些参数,来做这一轮的尝试?利用上一轮的结果,把某些估计的概率能更准确一些?

咱们来看公式 (3),对于公式 (3) 中右边乘法的部分 p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr),  在第一轮中,是用 p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr_%7Bn%5E%7B'%7D%7D) 来近似的,这里没有考虑 c_%7Bn%5E%7B'%7D%7D 参与的校验方程成立的可能性,如果把这个因素考虑进去,我们可以想到,应该能提高对  c_%7Bn%5E%7B'%7D%7D 估计的准确性。因此,我们可以用下面的公式,来进一步提高估计的准确性:
p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7Cr_%7Bn%5E%7B'%7D%7D)%20%5Capprox%20p(c_%7Bn%5E%7B'%7D%7D%3Dx%5E%7B'%7D%7C%5C%7Bz_%7Bm%5E%7B'%7D%7D%3D0%5C%7D%2Cr_%7Bn%5E%7B'%7D%7D)


因为在公式 (3) 中等号的左边,已经是假设 z_m%3D0,因此上面公式中的 %5C%7Bz_%7Bm%5E%7B'%7D%7D%3D0%5C%7D 要排除 z_m%3D0 这个校验方程。上面公式的右边,利用公式(0) 的推导方式,又可以转化为由 p(z_m%3D0%7Cc_i%3Dx%2Cr)%20计算出来,这样,利用第一轮计算出来的关于校验方程成立的概率 p(z_m%3D0%7Cc_i%3Dx%2Cr)%20,来递归循环第提高 p(c_i%3Dx%7C%5C%7Bz_m%3D0%5C%7D%2Cr)  的准确率。






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

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

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