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

卷积码的 BCJR 译码算法 (一)

2023-01-05 00:02 作者:乐吧的数学  | 我要投稿

本文主要讲卷积码的 BCJR 译码算法。需要知道卷积码的基本原理和一些概率知识。我们会推导译码算法的公式,并以具体的例子来讲解 BCJR 的译码过程。

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

我们知道,卷积码是一种状态机,卷积码编码器中寄存器的数据就是状态,当前状态已知的条件下,当前状态的输出,至于当前的输入有关,而与过去的状态和输入无关,这就是马尔可夫(Markov)性。

在收到的数据为:

r%3D(r_0%2Cr_1%2C%5Ccdots%2C%20r_N)


则,为了译码第 t 时刻的发送比特,我们计算这个后验概率

P(X_t%20%3D%20x%7Cr)

在 t 时刻,当前状态为  %5Cpsi_t%3Dp

下一个状态为   %5Cpsi_%7Bt%2B1%7D%20%3D%20q

我们把输入为 0 时的状态转移的集合,记为  S_0
我们把输入为 1 时的状态转移的集合,记为  S_1

则:

P(X_t%3D0%7Cr)%20%3D%20%5Csum_%7BS_0%7DP(%5Cpsi_t%2C%5Cpsi_%7Bt%2B1%7D%7Cr)



P(X_t%3D1%7Cr)%20%3D%20%5Csum_%7BS_1%7DP(%5Cpsi_t%2C%5Cpsi_%7Bt%2B1%7D%7Cr)


所以,关键点是计算如下这个概率:

P(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%7Cr)


我们做一下推导:

%5Cbegin%7Baligned%7D%0AP(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%7Cr)%20%3D%20%5Cfrac%7Bp(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr)%7D%7Bp(r)%7D%20%20%5C%5C%0A%5Cend%7Baligned%7D


因此,我们需要计算这个联合概率:

%5Cbegin%7Baligned%7D%0Ap(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr)%0A%5Cend%7Baligned%7D


我们把 r 分成三部分,一部分是 t 时刻以前的接收数据,一部分是 t 时刻接收的数据,一部分是 t 时刻之后接收的数据:

r%20%3D%20r_%7B%3Ct%7D%20%20%5Ccup%20r_t%20%5Ccup%20%20r_%7B%3Et%7D


则:

%5Cbegin%7Baligned%7D%0Ap(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr)%20%20%0A%20%20%26%3D%20p(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr_%7B%3Ct%7D%2C%20r_t%2C%20r_%7B%3Et%7D)%20%20%5C%5C%0A%5C%5C%0A%20%20%26%3D%20p(r_%7B%3Et%7D%20%7C%20%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr_%7B%3Ct%7D%2C%20r_t%20)%20p(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr_%7B%3Ct%7D%2C%20r_t)%20%20%20%20%5Cquad%20%5Cquad%20%20%5Ctext%7B(%E6%9D%A1%E4%BB%B6%E6%A6%82%E7%8E%87)%7D%0A%5C%5C%0A%5C%5C%0A%20%20%26%3D%20p(r_%7B%3Et%7D%20%7C%20%5Cpsi_%7Bt%2B1%7D%3Dq%20)%20p(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr_%7B%3Ct%7D%2C%20r_t)%20%20%20%20%5Cquad%20%5Cquad%20%20%5Ctext%7B(%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%80%A7)%7D%0A%0A%5Cend%7Baligned%7D%20%20%5Cquad%20-----%20(1)
我们再来分析公式 (1) 中后半部分

%5Cbegin%7Baligned%7D%0Ap(%5Cpsi_t%20%3Dq%2Cr_%7B%3Ct%7D%2C%20r_t)%20%26%3D%20p(%5Cpsi_%7Bt%2B1%7D%3Dq%2C%20r_t%20%7C%20%20%5Cpsi_t%3Dp%2C%20r_%7B%3Ct%7D)%20p(%20%5Cpsi_t%3Dp%20%2C%20r_%7B%3Ct%7D)%20%20%5C%5C%0A%5C%5C%0A%26%3Dp(%5Cpsi_%7Bt%2B1%7D%3Dq%2C%20r_t%20%7C%20%20%5Cpsi_t%3Dp)%20p(%20%5Cpsi_t%3Dp%20%2C%20r_%7B%3Ct%7D)%20%20%20%20%5Cquad%20%5Cquad%20%20%5Ctext%7B(%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%80%A7)%7D%0A%5Cend%7Baligned%7D%0A%5Cquad%20%20----%20%5Cquad%20(2)
把 (2) 代入 (1) 有:

p(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%2Cr)%20%20%3Dp(%20%5Cpsi_t%3Dp%20%2C%20r_%7B%3Ct%7D)%20p(%5Cpsi_%7Bt%2B1%7D%3Dq%2C%20r_t%20%7C%20%20%5Cpsi_t%3Dp)%20%20p(r_%7B%3Et%7D%20%7C%20%5Cpsi_%7Bt%2B1%7D%3Dq%20)%20%5Cquad%20%20----%20%5Cquad%20(3)


我们来看一下公式 (3) 的含义:
我们要分析当前状态为 p,下一个状态为 q ,且接收到数据为 r  这个联合概率,那么这个概率由三部分相乘得到:
(1) t 时刻之前接收到的数据为 r_%7B%3Ct%7D,且到达了 t 时刻的状态 为 p 的概率:
p(%20%5Cpsi_t%3Dp%20%2C%20r_%7B%3Ct%7D)


(2) t 时刻状态为 p 的条件下,到达下一个状态 为 q 且收到数据为 r_t 的概率

p(%5Cpsi_%7Bt%2B1%7D%3Dq%2C%20r_t%20%7C%20%20%5Cpsi_t%3Dp)


(3) t+1时刻状态为 q 的条件下,t 时刻之后的输出为 r_%7B%3Et%7D 的概率

p(r_%7B%3Et%7D%20%7C%20%5Cpsi_%7Bt%2B1%7D%3Dq%20)
那么:

P(%5Cpsi_t%3Dp%2C%5Cpsi_%7Bt%2B1%7D%3Dq%7Cr)%20%20%3D%20%5Cfrac%7B1%7D%7Bp(r)%7D%20%20%20p(%20%5Cpsi_t%3Dp%20%2C%20r_%7B%3Ct%7D)%20p(%5Cpsi_%7Bt%2B1%7D%3Dq%2C%20r_t%20%7C%20%20%5Cpsi_t%3Dp)%20%20p(r_%7B%3Et%7D%20%7C%20%5Cpsi_%7Bt%2B1%7D%3Dq%20)


我们举个例子来说明:

我们使用卷积码:

G(x)%20%3D%20%5Cfrac%7B1%7D%7B1%2Bx%5E2%7D
则结构如下:


也可以画成下图,两者是等价的:


则其状态转移栅格图为:


假如我们要编码 10 个比特,从状态 00 出发,编码结束后回到 00 状态,则所有可能路径有:


假如我们编码的比特  x=[1, 1, 0, 0, 1, 0,  1, 0, 1, 1]

则输出比特为  V=[11  11  01  01  10  01  11   01  10  10]

编码路径如上图中红色所示。



我们假如要计算如下这个概率
P(X_6%3D1%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)


注意上面公式中每个 r_i  其实是接收到的两个数据,分别对应 v_t%5E%7B(0)%7D%2C%20v_t%5E%7B(1)%7D 通过信道发送后得到的数据(这里要稍微注意一下,我们用 BPSK,则 0--> -1,  1---->1 , 发送的是 -1 或者 +1).

输入 为 比特 1, 对应的状态转移有如下几种情况:

%5Cpsi_6%3D0%20%5Cquad%20%5Cquad%20%20----%3E%20%20%5Cpsi_7%3D2%20%5C%5C%0A%5Cpsi_6%3D1%20%5Cquad%20%5Cquad%20%20----%3E%20%20%5Cpsi_7%3D0%20%5C%5C%0A%5Cpsi_6%3D2%20%5Cquad%20%5Cquad%20%20----%3E%20%20%5Cpsi_7%3D3%20%5C%5C%0A%5Cpsi_6%3D3%20%5Cquad%20%5Cquad%20%20----%3E%20%20%5Cpsi_7%3D1%20%5C%5C

所以:
%5Cbegin%7Baligned%7D%0AP(X_6%3D1%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%20%3D%20%26%20P(%5Cpsi_6%3D0%2C%5Cpsi_7%3D2%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20P(%5Cpsi_6%3D1%2C%5Cpsi_7%3D0%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20P(%5Cpsi_6%3D2%2C%5Cpsi_7%3D3%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%2B%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%20P(%5Cpsi_6%3D3%2C%5Cpsi_7%3D1%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cquad%20%20----%20%5Cquad%20(4)%0A%5Cend%7Baligned%7D


那么公式 (4) 中任何一个求和都可以按照下面这个例子来展开,我们以 P(%5Cpsi_6%3D2%2C%5Cpsi_7%3D3%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9) 为例:


%5Cbegin%7Baligned%7D%0AP(%5Cpsi_6%3D2%2C%5Cpsi_7%3D3%7Cr_0%2Cr_1%2C%5Ccdots%2Cr_9)%20%26%3D%20p(%20%5Cpsi_6%3Dp%20%2C%20r_%7B%3C6%7D)%20p(%5Cpsi_7%3Dq%2C%20r_6%20%7C%20%20%5Cpsi_6%3Dp)%20%20p(r_%7B%3E6%7D%20%7C%20%5Cpsi_7%3Dq%20)%20%5C%5C%0A%26%3Dp(%20%5Cpsi_6%3Dp%20%2C%20r_0%2Cr_1%2C%5Ccdots%2Cr_5)%20p(%5Cpsi_7%3Dq%2C%20r_6%20%7C%20%20%5Cpsi_6%3Dp)%20%20p(r_7%2C%5Ccdots%2Cr_9%20%7C%20%5Cpsi_7%3Dq%20)%0A%5Cend%7Baligned%7D

卷积码的 BCJR 译码算法 (一)的评论 (共 条)

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