![5G移动通信中的信道编码](https://wfqqreader-1252317822.image.myqcloud.com/cover/845/31391845/b_31391845.jpg)
2.6 卷积码
2.6.1 卷积码的概念与网格图表示
卷积码的编码器是有记忆的,在一定的时间内,编码器的输出不仅取决于该时刻的输入,也与一定数量以前的输入相关。考虑一个码率为R=k/n的卷积编码器。在卷积编码中,信息序列u被划分为长度为k的数据帧,在每一个时刻,一个k比特长的数据帧被作为信息序列送入卷积编码器,相应的输出是n比特的编码序列,k和n通常是比较小的整数并且k <n。每n-比特的编码输出块不仅依赖于当前时刻的k-比特输入序列,也依赖于m个以前输入的k-比特序列。参数m称为存储级数,ν=m+1称为卷积码的约束长度。该卷积码通常记为(n, k, ν)或(n, k, m)卷积码。
图2.7给出了一个存储级数m=2、码率R=1/2的卷积码编码器。这个编码器有k=1路输入,n=2路输出,称为(2,1,2)卷积码。由于模2和是线性运算,因此编码器是线性系统。它由下面两个生成序列所定义
g(1)=(101), g(2)=(111)
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0069_0001.jpg?sign=1739285749-5p84W05y3E8OKfEZ3OGLHzWqg3yYbA3N-0-c3f13f5a1ce7473f8f754a961c258bb7)
图2.7 存储级数m=2、码率R=1/2的卷积码编码器
根据图2.7所示,信息序列表示为u=(u0, u1, · · ·)。编码器的两个输出序列表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0069_0002.jpg?sign=1739285749-KFyIvfRHIAejXueVyNQPcTO1eRjuNYjs-0-12f576e873f6698754f0a37fc3130dd2)
和
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0069_0003.jpg?sign=1739285749-oO4I8NXdjGvpGzeLaferKMkiXEAmZGIp-0-32b4a4bfec6f2f05425ec98f693d04fe)
由于编码器可以看作线性系统,输出序列可以由输入序列和编码器的两个冲击响应卷积得到,并且g(1)、g(2)就是编码器的两个冲激响应,由u=δ=(100 · · ·)得到。冲激响应至多持续m+1个时间单位,且可写为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0070_0001.jpg?sign=1739285749-NSTS2eWbGPiuPIXFuFYaV9wbK2otCHtE-0-ed8758d5481589813bfff8daf9e59bfe)
g(1)、g(2)被称为编码器的生成序列,它描述了编码器中移位寄存器的连接关系。令u=(u0, u1, · · ·)是编码器输入信息序列,则两个编码输出序列为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0070_0002.jpg?sign=1739285749-y8vsBU2I3ZsyOStA73gFveXdHOvKawI9-0-b8b502b6555849c6010d50c41a8607c7)
其中“*”表示卷积运算。
在t时刻,输入是单个比特ut,相应的输出是两比特组成的一个码组(block)(,
),其中
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0070_0005.jpg?sign=1739285749-cdtYGow1ZkhAITIVcpo00vcZtFMWxoG2-0-9e172a6ace46fbf4ff1c30f98e2accc4)
输出码字是。例如,对于输入u=(1011100 · · ·),码字c=(11,01,00,10,01,10,11, · · ·)。
将生成序列交织,重新排列可得到如下时域生成矩阵。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0070_0007.jpg?sign=1739285749-IqmQewu6OvKPVEOhKZPIoAkXw5Urhe7O-0-f264b676dba70175e26ca86323758526)
编码方程可以重写成矩阵的形式:c=uG。
描述卷积码的方法有很多,除了上面从生成矩阵方面描述,也可以从卷积码的多项式、状态图和网格图等方面描述。
(1)卷积码的多项式表示:在线性系统中,卷积的时域运算可以以一种更方便的形式表示,即多项式乘法的变换域运算。编码输出的每个序列可以用多项式表示,相应的编码方程为
c(1)(D)=u(D)g(1)(D)
c(2)(D)=u(D)g(2)(D)
其中信息序列为
u(D)=u0+u1D+u2D2· · ·
编码序列为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0071_0001.jpg?sign=1739285749-iD5RkRuoL1cMcOJReWlhrZ9jetCOGr7a-0-73fb51da56af0fcef202e08f31ce234b)
码的生成多项式为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0071_0002.jpg?sign=1739285749-f58hJ1dCDh2BX8l8e0mdA7sUBZ3fJj0Y-0-2a7efeb39f3f7fb0250755b9baed7a15)
对于图2.7所示的卷积码,生成矩阵表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0071_0003.jpg?sign=1739285749-OGaZ184nGquoyHz4lokV62wkkjuauOZn-0-97ffdd037c2da771a07414ffdd44b7a7)
(2)状态图:因为编码器是一个线性时序电路,所以可以用状态转移图来描述其行为。我们用t时刻记忆单元中存储的消息比特来表示t时刻的编码器状态。上述例子中(2,1,2)卷积编码器有两个记忆单元,因此共有4种可能的状态,其状态转移图如图2.8所示。图中的状态被定义为编码器电路中两个记忆单元的值(从左至右读取),边上的标记为“输入/输出”。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0072_0001.jpg?sign=1739285749-ElljSroLdza5z2FbULIlh5Im99mGiiyl-0-b6e4affeb05920e15fc80ebb855b2f98)
图2.8 (2,1,2)卷积编码器的状态图
(3)网格图:将状态图在时间轴上展开,就会清晰看到卷积编码器随时间的状态转移,这个在时间上扩展开的状态图就称为网格图(trellis diagram)。具体在图示中,网格图是在水平方向上加上离散时间维度的状态图。上述(2,1,2)卷积码的网格图如图2.9所示。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0072_0002.jpg?sign=1739285749-0aACN4xatDBZmtQBrl9wYL6sJwqN6hdF-0-2f2f9af1434be0504e3686bf73641605)
图2.9 (2,1,2)卷积码的网格图及编码路径
编码器从00状态开始,在t≥2时的网格,本质上是状态图的复制。可以看到网格图给出了所有可能的编码路径,消息序列u的编码等价于在网格图上追踪一条路径。网格图是描述卷积码编码器的一种重要方法,它对于描述卷积码的译码算法也是非常方便的。
2.6.2 卷积码的最大似然译码:Viterbi算法
考虑一个卷积编码的数字通信系统,如图2.10所示。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0073_0001.jpg?sign=1739285749-yRA51RXNh6ZbgpvpJtBwqiN5dh7Bz2nF-0-14259b1ea9b78d422be8b4d3d728d219)
图2.10 卷积编码的通信系统框图
假定使用(n0, k0, m)卷积码C, m为编码器的存储单元个数(存储级数)。输入信息序列长度为L段(K=k0L个比特):。
编完信息比特并添加尾比特后,输出码字c的长度为N=n0(L+m)比特:c=(c1, c2, · · ·, cL+m), 。在网格图上,每个码字是从全0状态出发经过不同分支,最后回到全0状态的一条网格路径,称为编码路径。作为一个例子,图2.11所示卷积编码器的网格图及编码路径如图2.12所示。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0073_0002.jpg?sign=1739285749-l6UaBsLdOCN1lq4nOAJCCli15c4rKMSv-0-a88695388315fc9f09fe3baa72a0a1f5)
图2.11 (2,1,2)卷积编码器
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0073_0003.jpg?sign=1739285749-9mzrKV2CaECL4X2YgAhaQurjJDvSMxH1-0-1e41cc8ea7ab30ff8f420513d5682c6d)
图2.12 (2,1,2)卷积编码器的网格图
假定经过编码信道传输,与发送码字c对应的接收序列是r=(r1, r2, · · ·, rL+m)。对于BSC信道,。对于AWGN信道,假定采用BPSK调制,每一编码符号
被映射为发送信号
,接收信号
,其中
是独立同分布的高斯噪声序列。这样,软判决译码器的输入序列r=x+n,其中x=M(c)=(-1)c。
ML译码器选择使P(r|c)最大的c作为译码输出:
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0073_0009.jpg?sign=1739285749-uQwNBx1Lw0KsGzCb5fBBoJGaLDvKj4NX-0-73972b6856f3889568bbb9c1e47d5aef)
对于无记忆信道,有
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0001.jpg?sign=1739285749-WUXbxH9oakyvJbMePOI5sva8X6fMp8NH-0-9bf38103c717fc9891154a5d9d6ad9cc)
在对数域上,用对数似然函数表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0002.jpg?sign=1739285749-0emmKAltubw8su4yyVWuyhh0K9QFuetC-0-af9bb52ee95d8d19795b792012b36dcf)
令M(rk|ck)=log P(rk|ck)表示分支度量。一条网格路径的前t个分支的累积度量(或称为部分路径度量)定义为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0003.jpg?sign=1739285749-2hBoqvtyooZLn7pVswO14s77RhujwvCS-0-96e4edce5688b523a874f0b8ada1df4c)
对于AWGN信道(或BSC),最大似然度量P(r|c)等价于最小Euclidean距离度量||r-M(c)||2(或Hamming距离度量dH(r, c))。因此,AWGN信道下的最佳译码准则简化为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0004.jpg?sign=1739285749-uQElolbARuiXsk51oefYcbOVH445DcYq-0-50b27942fc17e680263b94d812405699)
因此,对于软判决译码器,网格图上的状态转移分支度量定义为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0005.jpg?sign=1739285749-zg1xAkHGxfCRLEOxhPNRwICEkLbtA3j5-0-65b96844767d7eaddf529811e2449f20)
对于硬判决译码器,网格分支度量定义为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0074_0006.jpg?sign=1739285749-H61L8UFAU60PtCEZ83yO0M839Ebv3Kmg-0-e1ca16198fb1416c6bb87abc5eaa6bf9)
Viterbi译码算法在网格图上通过递归处理方式寻找最大似然路径。它首先计算k时刻的接收信号rk与进入状态Sk的所有网格分支之间的Hamming(或Euclidean)距离,并将它作为分支度量;然后计算进入状态Sk的所有网格路径的度量并进行比较,存储有最佳度量的那条网格路径及其度量,剪掉其余的(不可能成为ML选择的那些)网格路径。译码器对k时刻的所有状态进行这种选择。这样,在时刻k,对每一状态Sk,确定了一条从时刻0的全0状态出发而到达Sk的最佳路径,称为幸存路径。如图2.13所示,其中Γ(Sk=s)表示k时刻到达状态Sk=s的幸存路径的累积度量(或称为状态度量)。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0075_0001.jpg?sign=1739285749-qBhx3L5n5xFVfnKB8NdgJZ1LmdccVyFx-0-a5a30ec3863b87c19d75d6a7dfda9ff3)
图2.13 Viterbi译码器路径度量计算
具体地说,k时刻的幸存者按照下列“加―比(较)―选(择)”运算从k-1时刻的幸存者中确定。
(1)对状态转移Sk-1→Sk,计算该转移分支的度量M(rk|ck),并与k-1时刻的幸存路径度量Γ(Sk-1)相加,得到k时刻的一个候选路径度量。
(2)对k时刻的每一个状态,比较到达该状态的候选路径度量,选择最小距离(或最大似然)度量所对应的路径作为幸存路径,并存储它的转移路径历史(从时刻k=1开始)及其度量Γ(Sk)。
在最后时刻(L+m),有一个唯一状态,它的幸存路径一定是结尾网格图上的最短路径。
例2.3 考虑图2.11中的(2,1,2)卷积码。发送序列为c=(11,01,01,00,10,11),接收序列为r=(11,11,00,00,10,11)。Viterbi译码器选择幸存路径的过程如图2.14 ~图2.17所示,图中状态转移分支边上的标号为Hamming距离,状态度量Γi等于该状态的幸存路径累积度量。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0076_0001.jpg?sign=1739285749-ce9sJuMcl0aFJEWoVNTdOG090NSKr2mU-0-ff63688f10fa69049fd29fdfe58005d4)
图2.14 k=5时刻的幸存路径
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0076_0002.jpg?sign=1739285749-JQkdYASlYMsXi1jff1cYwCQZN7UazQMp-0-26a15914a499eeb57ab691e9a5836a2f)
图2.15 修剪不可能路径后k=5时刻的幸存路径
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0077_0001.jpg?sign=1739285749-Rr1LKbI8WEuW07UGpF5jUOQYvlI5aqqf-0-4fb38a5585fa8c0b6e3fa6d457209069)
图2.16 k=6时刻的幸存路径
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0077_0002.jpg?sign=1739285749-LZZNuoEXC357AjOyMRa8DH8kcPeS3YVl-0-eb8242e60e981bf8f504b8ce99963262)
图2.17 最终选择的幸存路径
2.6.3 卷积码的逐符号MAP译码:BCJR算法
1974年,Bahl、Cocke、Jelinek和Raviv提出了一种最大后验概率(MAP)算法[28],用于估计噪声中一个Markov源的状态转移的后验概率,这个算法后来就被称为BCJR算法。论文中也展示了该算法如何用来译分组码和卷积码。用于译卷积码时,BCJR算法能够最小化误比特率,即BCJR算法在最小化BER意义下是最佳的;而Viterbi算法是最小化码字错误概率(在网格图上译码器选择不正确路径的概率)。另外,BCJR算法不仅能提供比特序列估计值,而且能够给出每个比特被正确译码的概率,这也是Turbo迭代译码的基础。因此,BCJR算法经常用于需要软信息输出的译码器/检测器,如Turbo译码器和Turbo均衡器等。
在本节中,我们经常使用贝叶斯(Bayes)规则,它简述为
P(u, v)=P(u|v)P(v)
贝叶斯规则的一个直接结果是
P(u, v|w)=P(u|v, w)P(v|w)
下面具体介绍卷积码的逐符号MAP译码算法。考虑图2.18所示的系统模型。令u=(u1, u2, · · ·, uK), uk∈{0,1},是输入信息序列,它用码率为1/2的(系统或非系统)卷积编码器进行编码,生成编码符号序列c=(c1, c2, · · ·, cN),其中,1≤k≤N。这里N表示网格图长度,如果没有结尾(termination)处理,则有N=K。然后编码符号
和
用BPSK调制,得到在信道上传输的发送符号xs和xp。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0077_0003.jpg?sign=1739285749-lepZV9T7madxv2SuVv0txEJfQPY0XxnW-0-29899cf7abcb81433d762ce789333431)
图2.18 卷积编码通信系统模型
对于图2.18所示的信道模型,接收序列
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0077_0004.jpg?sign=1739285749-KYsYeIEEtDzZUMJx9E0bEPA2B0aFdXOO-0-c2dbdea51835cd333fa32f5f828d3b76)
由N个符号对组成,其中
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0078_0002.jpg?sign=1739285749-xajrkeLpkRS0FqVLORistx0dlPO9Fcn9-0-21289d664967653578d8a788f0898f09)
式中,Es为每发送符号的平均能量;和
为信道衰落因子,对于AWGN信道,
;对于Rayleigh衰落信道,
和
为两个Reyleigh随机变量。
和
为两个独立同分布的高斯噪声样值,它们的均值为0,方差
。
根据逐比特最大后验概率准则,译码器输出由下式得到:
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0078_0012.jpg?sign=1739285749-9YMSFtFKB065bEab7qAdHuA9Q7WfzcOb-0-5e8102742137f2258902fb3fb7af4747)
这里P(uk|y)是信息比特uk在接收到序列y的情况下的后验概率。
BCJR算法就是工作在网格图上的一种高效MAP算法。为后面使用算法方便起见,考虑图2.19所示的软输入软输出(SISO)MAP译码器,它能为每一个译码比特提供对数似然比输出。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0078_0013.jpg?sign=1739285749-pvRTVe5donm4kw0arNUtw6HlQbTnZf7d-0-4b5327ee304db1555ba13c99371ecbeb)
图2.19 软输入软输出译码器框图
图2.19中MAP译码器的输入La(uk)是关于uk的先验信息,L(uk)是关于uk的对数后验概率(APP)比。它们的定义为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0078_0014.jpg?sign=1739285749-jEoOYluQ86ZQdTS0JsdYqxHtm1x2LT2w-0-83c6e60862d210f62ddee100fc4e93f2)
MAP译码器的任务就是求解式(2.44),然后按照下列规则进行判决。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0078_0015.jpg?sign=1739285749-ooiVkSmPa0VAO5BarIqnmVJswbzlC0Ko-0-3fbcc401db51407097d248e169ccb0d3)
下面利用BCJR算法对式(2.44)的计算方法进行推导。
假定卷积编码器有m个记忆单元(存储级数为m),约束长度ν=m+1。令Sk=(ak, ak-1, · · ·, ak-m+1)是k时刻编码器的状态。编码器的状态集合用S表示,状态数为M=|S|=2m。
在网格图上第k时刻的状态转移分支可以表示为bk≜(Sk-1, uk, ck, Sk),其中uk和ck分别是对应状态转移Sk-1→ Sk的信息符号和编码符号。连接状态Sk-1=s′∈S和Sk=s∈S的所有平行分支组成的集合记为Bk(s′, s)。根据贝叶斯准则,后验概率可以表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0079_0001.jpg?sign=1739285749-nA3RaZqSK5BczjTDiTSgBSg2HbUawz3H-0-8f07e9334fb0481aa7d46fc027707e77)
其中,是由输入uk=i引起的状态转移Sk-1→Sk的集合。故式(2.44)可表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0079_0003.jpg?sign=1739285749-bVxN2tRurm0pzEQ3Bkx6CA6JC18nbw8J-0-4397a60dd042c4b82692f1dd6db6a729)
概率中的序列y可写为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0079_0005.jpg?sign=1739285749-iRy9KLvh7pr2vumc3qyqelNWVWsa62O5-0-7f359d9a7dcea404efba8e6b2ae2341c)
其中,表示接收序列y在t到ℓ时刻内的子序列。
应用贝叶斯准则,对进行分解,可得
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0079_0008.jpg?sign=1739285749-SGFZbB0s1EEQwq06tbA72COyLniaqV87-0-d84cb93041f540924516aab08515c001)
其中
① 称为前向状态度量,由k时刻译码器状态Sk=s和接收序列
共同决定。
② 是后向状态度量。
③ 是输入为uk=i时连接状态Sk-1=s′到Sk=s的分支度量。
式(2.47)遵循译码器的Markov性,即如果已知Sk=s,则时刻k之后发生的事件独立于到达Sk之前的序列。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0080_0004.jpg?sign=1739285749-mfPGdPKbxGIuFuXw4ENGdPyB2bQIvGaP-0-26e6e1cb8db551e4b388cc84fe5f5f83)
图2.20 状态转移与分支度量
定义
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0080_0005.jpg?sign=1739285749-whs8BM96FcKcMMnRUEwqVUpoMMn31ewX-0-7f3f9bf83eb56e54a691e4a7e81a9903)
为从Sk-1=s′到Sk=s的状态转移概率。如果在网格图中存在从Sk-1=s′到Sk=s的平行转移分支,则γk(s′, s)的数值为所有对应平行分支度量的总和。将式(2.48)代入式(2.46),得到
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0080_0006.jpg?sign=1739285749-SGJJwYf6K6Lg74Ya3Edl2ruWvnuAnu9m-0-f98aaa56bdf147c3a2ebb050655de453)
下面来求αk(s)、βk(s)和γk(s′, s)。根据定义,αk(s)项可通过递归计算。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0080_0007.jpg?sign=1739285749-9f31fhQshKwXsPw2zU1scgzZ1RxsdgB0-0-e5900f4430abbbb8566a1d5afd65fa15)
其中初始值为α0(s)=P(S0=s)。
类似地,βk(s)可以通过如下的后向递归计算。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0081_0001.jpg?sign=1739285749-3l3JrY75NxJnv2qNgcr7LbdZCIp5jBlE-0-5159386f2820fc4a717b1e40a75e7056)
边界条件为βN(s)=P(SN=s)。
分支度量可进一步分解为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0081_0003.jpg?sign=1739285749-lxt9WDNQxkUXMiNXEmwA4hfBJ0bXTf5m-0-72ace09a16b09052d83dddb70312d850)
其中,P(uk=i)是uk的先验概率,P(Sk=s|Sk-1=s′, uk=i)是在输入为uk=i的条件下,状态转移Sk-1→ Sk发生的概率,该数值为1或0。p(yk|ck) ≜p(yk|Sk=s, Sk-1=s′, uk=i)是在给定特定分支的情况下,接收到yk的概率,由信道转移概率确定。对于无记忆AWGN信道,可由下式计算得到
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0081_0004.jpg?sign=1739285749-TYo8VnbgXmUlaHVNAuecIXc8phRHtRD2-0-e1966d2af58a23d3939a81ea8b6025a2)
其中Ak是独立于编码比特的常数。如前所述,令
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0081_0005.jpg?sign=1739285749-mC7idT484H6VmiTSLgqdqiO06SasKGLD-0-a961b625d06af3c296508c28940b07a0)
为信道的可靠性度量。则式(2.54)可写为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0081_0006.jpg?sign=1739285749-bw5Wd7PILe8okGF8nZogmHEPnyWCMyCV-0-248cef4d1134b2729fbf1cfb3757bf9d)
因此
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0001.jpg?sign=1739285749-61dBmW2KpmKEGqxJyKYBTpN1wKWHrqBE-0-a03782af13f9c57c665acb36ae3cd0a4)
至此,如果将式(2.50)分子、分母中的约掉,L(uk)的求解已基本完成。然而,由于式(2.56)是从连续随机变量的概率密度计算得到,γk(s′, s)的值可能大于1,这会使得式(2.51)、式(2.52)产生上溢出,导致整个算法不稳定。另外,由于下列原因,也可能导致下溢出:随着k的增加,某些状态度量的数值将小到几乎可以忽略不计,这将由于精确性的限制造成错误。考虑如下的求和算式时,该现象就显而易见。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0003.jpg?sign=1739285749-RubKNuBEsXFXwdiv25FWKEJKZPzJxYLV-0-d2eb817ff35f7885ea53e7faf6fbdb7a)
接收到特定序列的概率,将随着时刻k的增加而变得非常小。
因此,有必要对αk(s)和βk(s)进行归一化处理。令
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0005.jpg?sign=1739285749-OAWsr6oULJOWJaF8ckQt2AwWAYCuosvi-0-2cf4c3d8681100ef8e0a20014a80a16a)
因为,所以
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0007.jpg?sign=1739285749-39pb3FjkViinci9JekXddga86fFitDPD-0-cf1b1d2b67be7daf299f016864147c28)
将式(2.51)代入式(2.60),并且分子分母同除以,得到
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0009.jpg?sign=1739285749-RbSYXBhAhQ2C3NAgTtaXj5RyXXctIakK-0-77539c0e7310b28b999e37f7220da56f)
对于,考虑到
,于是有
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0082_0012.jpg?sign=1739285749-gPwHgWNReyMX2Kw1VsrYIrQaSweeEnaX-0-d1a30ed1bf00aeccab2c8fd705c28841)
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0001.jpg?sign=1739285749-PqKw7mshC6oyJkVaL2FesAxD6jGlrp86-0-5be3304842fe55b9f2ee748a652b6044)
合并式(2.48)和式(2.59)得
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0002.jpg?sign=1739285749-v63t1X8aybhTvqJX5wePrRkZcLygPg4G-0-a48cf6a7d76704a64e8038244af17219)
将上式代入式(2.46),并且分子分母同乘以因子,便得最终计算公式为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0004.jpg?sign=1739285749-wWd6q9zqRkQy0BT52VXOoQs1NpzcJ3od-0-d957a9be990f4527550c7929de2387c4)
这样就完成了分量码的MAP译码算法的推导。和
的递推运算示意图如图2.21所示,其中αk(0)=αk-1(0)γk(0,0)+αk-1(1)γk(1,0), βk(0)=βk+1(0)γk+1(0,0)+βk+1(2)γk+1(0,2)。
的初始条件为(假定RSC编码器的初始状态为零状态)
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0008.jpg?sign=1739285749-rqINwg2icEoncTzmX0ZGmwiLQzvBl62E-0-7e3a2ba9b70906f44fb89a03109be9ca)
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0084_0001.jpg?sign=1739285749-OhRgNXx2JNzNfoke7gT0tp7alKAMhpMJ-0-91196d603059b4855fdf63e1649c2b39)
图2.21 和
的递推计算示意图
如果编码器在每帧编码完成之后通过结尾(termination)处理也回到零状态,那么递推的初始条件为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0010.jpg?sign=1739285749-eTjiuPf75SqM7T8SgdDpt3WlnQoLWJx9-0-c11d63bcfa24083a4b0d01daa908d7a7)
否则,应设定为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0083_0011.jpg?sign=1739285749-Va55IXLHVHoEzitnL8JrYhmLFNPAQwRI-0-df8db8809c849f818c36a968f0eb0e02)
注意:MAP算法也通常被称为BCJR算法或前后向递归算法,与隐马尔可夫模型(hidden Markov models)中的Baum-Welch算法等价。
MAP算法可归结如下。
(1)初始化:
α0(0)=1, α0(∀s=0)=0;
βN(0)=1, βN(∀s=0)=0。
(2)前向递归:对于k=1到N,做如下操作。
①对i=0、1,参照式(2.57)计算并存储分支度量。
②对s∈S,参照式(2.61)计算并存储前向度量αk(s)。
(3)后向递归:对于k=N-1到0,做如下操作。
参照式(2.62),使用前向递归中计算得到的分支度量值,计算并存储后向度量βk(s), ∀s∈S。
(4)输出:对于k=1到K,参照式(2.63)计算并输出软信息L(uk)。
2.6.4 Max-Log-MAP译码算法
1.对数域上的简化运算
如果译码器运行在对数域上,则上述最大后验概率(MAP)算法中涉及的计算将会得到简化。定义
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0085_0001.jpg?sign=1739285749-LM6P4ciFHSjd1pBapAhv3EuLpizv9zW6-0-5d21cfab15b2243e803fa896b5e0ad8a)
如果x>y,可将其写为
max*(x, y)=ln[ex(1+ey-x)]=x+ln(1+ey-x)
考虑一般情况,有
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0085_0002.jpg?sign=1739285749-DnQ0aLkehB9RFxuL5SjCbJMau4DR2SIj-0-053af217bdd1b298847fab4b0db6ddae)
其中,fc(|x-y|)=ln(1+e-|x-y|)是一个修正函数。实际应用时,可以通过查表实现。
这可以推广到多个变量的情况。例如,对于一个实数集合{δ1, δ2, · · ·, δq},有
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0085_0003.jpg?sign=1739285749-iuTMOZ6zMRybzDed9CLEhni4lpVc5aTD-0-ed0d87a762aa11892420f2c317332efc)
这表明ln(eδ1+eδ2+· · ·+eδq)可以通过递归计算得到,记为
max*(δ1, δ2, · · ·, δq)=max*(max*((max*(max*(δ1, δ2), δ3), · · ·), δq-1), δq)
2.Max-Log-MAP算法
Max-Log-MAP算法是基于前文所述MAP算法的次优简化算法,旨在误码率和译码计算复杂度上取得有效的折中。
Max-Log-MAP算法使用了以下的Max-Log近似。
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0085_0004.jpg?sign=1739285749-C2gImfBYUibbgkla6Dezvs75K0mvfDrv-0-640aa06ca5f26a0f35fcc8ad1caa1a4c)
在该近似下,有下面的推导。对于式(2.61),可得
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0085_0005.jpg?sign=1739285749-yzUPbrMth5ioqx1W2OY50IjrhCgQBsd3-0-5a6209f6eaedec20eb038eb2a8ae0c00)
这里
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0001.jpg?sign=1739285749-zHlRp3RZbye2prmqShYIoyofd0YpJWp0-0-0a7c71529897650f816f9c38554b6088)
以及
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0002.jpg?sign=1739285749-dSbSfnysR75P1uquJi6gNhpGehIlbniY-0-3b19512f1f6db523914dd6c85c4539ac)
由此,式(2.61)的前向递归在对数域可以表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0003.jpg?sign=1739285749-c0XJ4CueHXaveCn6QGZrmUnoevJlATtH-0-88aa533c97cd51a53e0262b9068b54ef)
或者
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0004.jpg?sign=1739285749-mB9YBJXmFCJxZoYSuxhZ3ClE7J1ExNOO-0-c53ce7ad3356bc1bfb0f6581afe44b95)
类似地,式(2.62)后向状态度量可以表示为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0005.jpg?sign=1739285749-3QrK1t45yGWBtcib3Mkh2VNMKdb0pi1Y-0-794e7ef011ec42f16fb0aa40df100c6e)
等效地
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0006.jpg?sign=1739285749-nzaq1MDQuOg8wGRlx3svt0JO5vrV3Xq7-0-bf8d4cf7eb25998256b23cf633c7963d)
显然,该前后向状态度量可以通过递归计算得到,初始条件为
A0(0)=0, A0(s)=-∞, ∀s=0
BN(0)=0, BN(s)=-∞, ∀s=0
类似地,式(2.63)的最终对数后验概率比可以近似为
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0086_0007.jpg?sign=1739285749-eAlfhS2dYZpKJlGHNCbWetpR2FiPuguM-0-f5314f5965b769236bb19541b5cdc3bc)
![](https://epubservercos.yuewen.com/B97B47/16992237205825406/epubprivate/OEBPS/Images/figure_0087_0001.jpg?sign=1739285749-zk5BOB6bUgtCY2mB99EtBMnW3EuTpzLK-0-ac7c350dd880a0875d9c8c64a2c5f253)
这意味着通过执行“加―比(较)―选(择)―减”操作便可实现译码功能。
从上述讨论可以看出,Max-Log-MAP算法与双向Viterbi算法等价。如果将max函数用max*代替,就可得到Log-MAP算法。