第5章
CHAPTER 5
信道编码理论
第4章描述了信源编码理论,包括无失真信源编码和限失真信源编码。但是一般信道中总存在噪声和干扰,这些干扰和噪声会造成信息损失。那么,如何保证在有噪信道中可靠地进行信息传输,怎样才能使消息通过传输后发生的错误最少,传输可达的最大信息传输率又是多少?这些问题属于通信的可靠性问题,是本章要研究的主要内容。
信道编码包括线路编码和纠错编码。由于信号在信道传输时受到干扰,信号码元波形将发生变形,传输到接收端时可能发生错误判断,因而需采用线路编码使之更适合于信道特性或满足接收端对恢复信号的要求,减少信息的损失。另外,若少量错误已经发生,则可通过纠错编码恢复信息。本章主要研究纠错编码,其过程是通过有选择地在数据中引入冗余,以最小冗余的代价获得最佳抗干扰性能,纠正数据传输过程中出现的错误。通常,我们将用于检测差错的编码称为检错码,将可以检测和校正错误的编码称为纠错码。
5.1最佳译码准则
由于信道中存在噪声,因而在有噪信道中传输消息将发生错误。为了减少错误的发生和提高信息传输的可靠性,首先需要分析这些错误与哪些因素有关,有没有办法控制这些错误的发生,以及能控制到什么程度。
很明显,传输信息错误的多少与信道的特性有关,如信噪比较高的信道产生的错误较少。除此之外,错误的产生还与编译码过程有关。图51给出了通信系统的编译码过程。
图51编译码过程
设有噪离散信道的输入符号集为X={a1,a2,…,an},输出符号集为Y={b1,b2,…,bm},信道的传递概率为p(Y|X)={p(bj|ai),i=1,…,n; j=1,…,m}。由于噪声的干扰,信道输入符号ai(i=1,2,…,n)时,信道的输出是ai(i=1,2,…,n)或者是该符号的变形bj(j=1,2,…,m)。因此,为了达到通信的目的,必须制定译码规则,也就是设计函数
F(bj)=ai(i=1,2,…,n; j=1,2,…,m),使它的每个输出符号有且仅有唯一的输入符号与之相对应,该函数被称为译码函数。由于每个输出符号都可译成输入符号中的任何一个,所以共有nm种译码规则。
如果确定了译码规则,那么,当信道输出符号是bj(j=1,2,…,m)时,则一定可以按译码规则译成相应的符号F(bj)=ai(i=1,2,…,n; j=1,2,…m)。当信道的输入符号是ai时,显然是正确译码; 如果不是ai,则就出现译码错误。由此,在信道输出端收到符号bj(j=1,2,…,m)后,正确译码的概率prj就应该是在信道输出端出现bj(j=1,2,…,m)的前提下,推测信道输入符号为ai的后验概率,即
prj=p{{X=F(bj)=ai}|{Y=bj}}(5.1.1)
同时,在信道输出端收到某符号bj(j=1,2,…,m)后,错误译码的概率是pej就应该是在信道输出端出现bj(j=1,2,…,m)的前提下,推测信道输入符号是除了ai以外的其他任何可能的输入符号的后验概率,即
pej=p{{X=ε}|{Y=bj}}(5.1.2)
其中,ε表示除了F(bj)=ai以外的其他可能的输入,显然,式(5.1.2)可改写为
pej=1-prj=1-p{{F(bj)=ai}|bj}(5.1.3)
图52二元对称信道
【例51】设有一个二元对称信道,如图52所示,其输入符号为等概率分布,求译码差错概率的大小。
解: 针对译码规则一: 接收到符号0,译成发送的符号为0; 接收到符号1,译成发送的符号为1。因此当发送符号0时,正确译码的概率为0.1,译错的概率为0.9; 当发送符号1时,正确译码的概率为0.1,译错的概率为0.9。那么,在输入符号是等概率的情况下,平均错误概率为
pe=12(p0+p1)=12(0.9+0.9)=0.9
针对译码规则二: 接收到符号1,译成发送的符号为0; 接收到符号0,译成发送的符号为1。因此当发送符号0时,正确译码的概率为0.9,译错的概率为0.1; 当发送符号1时,正确译码的概率为0.9,译错的概率为0.1。那么,在输入符号是等概率的情况下,平均错误概率为
pe=12(p0+p1)=12(0.1+0.1)=0.1
由此可见,错误概率既与信道的统计特性有关,也与译码规则有关。在例51中,输入符号有0、1两种,输出符号也有0、1两种,所以可以构成nm=22=4种译码规则,分别如下:
(1) F(0)=0
F(1)=1
(2) F(0)=1
F(1)=0
(3) F(0)=0
F(1)=0
(4) F(0)=1
F(1)=1
译码规则(1)表示信道输出端出现0,则译为0; 信道输出端出现1,则译为1。
译码规则(2)表示信道输出端出现0,则译为1; 信道输出端出现1,则译为0。
译码规则(3)表示不论信道输出端出现0还是1,都译为0。
译码规则(4)表示不论信道输出端出现0还是1,都译为1。
很明显,不论采用哪一种译码规则,都有可能将输入端的0码在输出端译成1,或者将1译成0。那么,关键问题是选择哪种译码规则可以使平均错误概率最小。
对于通信系统而言,不仅要描述个别的输出符号的正确或错误译码概率,更需要描述在信道的输出端,每收到一个符号的平均正确译码或平均错误译码的概率,即在信道输出端每收到一个符号时,发生正确译码或错误译码的可能性的大小。
在信道输出端,每收到一个Y符号的平均正确译码概率pr,应该是式(5.1.1)所示的后验概率prj(j=1,2,…,m)在信道输出随机变量Y概率空间中的统计平均值,即
pr=∑mj=1p(bj)prj=∑mj=1p(bj)p{{F(bj)=ai}|bj}(5.1.4)
同样,在信道输出端,每收到一个Y符号的平均错误译码概率pe,应该是式(5.1.3)所示的后验概率pej(j=1,2,…,m)在信道输出随机变量Y概率空间中的统计平均值,即
pe=∑mj=1p(bj)pej=∑mj=1p(bj){1-p[(F(bj)=ai)|bj]}
=∑mj=1p(bj)-∑mj=1p(bj)p[F(bj)=ai|bj]
=1-∑mj=1p(bj)p[F(bj)=ai|bj](5.1.5)
平均错误译码概率pe表示在信道输出端平均每收到一个符号时,产生错误译码的可能性的大小; pe越大,表示在信道输出端平均每收到一个符号产生错误译码的可能性越大,也就是通信的可靠性越差。所以,pe可以作为衡量通信可靠性的指标。
综上,平均错误译码概率pe取决于变量Y的概率空间、信道的后验概率分布和预先设定的译码规则。因此,对于给定信道,其信道的转移概率是确定的,当信道的输入符号(即信源的输出符号的概率分布)确定后,不同的译码规则就有不同的平均错误译码概率pe,合适的译码规则可以降低平均错误译码概率,因此,制定合适的译码规则成为提高通信可靠性的一种有效手段。
那么,按什么准则来选择译码规则,可使其平均错误译码概率pe达到最小呢?若给定信道的传递概率p(Y|X)={p(bj|ai),i=1,2,…,n; j=1,2,…,m},且有0≤p(bj|ai)≤1,(i=1,2,…,n; j=1,2,…,m); ∑mj=1p(bj|ai)=1,i=1,2,…,n。可将给定的n×m个传输概率p(bj|ai)(i=1,2,…,n; j=1,2,…,m)排列成信道矩阵如下:
b1b2…bm
P=a1
a2
anp(b1|a1)p(b2|a1)…p(bm|a1)
p(b1|a2)p(b2|a2)…p(bm|a2)
…
p(b1|an)p(b2|an)…p(bm|an)(5.1.6)
可得
p(ai|bj)=p(ai)p(bj|ai)p(bj)=p(ai)p(bj|ai)∑ni=1p(ai)p(bj|ai)(5.1.7)
由给定的信道输入X的概率分布p(X)={p(a1),p(a2),…,p(an)}和信道的传递概率p(Y|X)={p(bj|ai),i=1,2,…,n; j=1,2,…,m},可以求出信道输出随机变量Y的m个概率分量为
p(bj)=∑ni=1p(ai)p(bj|ai),j=1,2,…,m(5.1.8)
式(5.1.8)表明,对于给定信源和给定信道,后验概率和信道输出随机变量Y的概率分布也都是确定的。
现在,我们来看平均错误译码概率,问题是如何选择译码规则F(bj)=ai,j=1,2,…,m; ai∈{a1,a2,…,an},使平均错误译码概率达到最小值。不同的译码规则,不会引起p(bj)(j=1,2,…,m)和p(ai|bj)(i=1,2,…,n; j=1,2,…,m)的变化。显然,要使pe最小,必须使式(5.1.9)达到最大,即
max∑mj=1p(bj)p{F(bj)=ai|bj},i=1,2,…,n(5.1.9)
因此,必须有
maxp{F(bj)=ai|bj},j=1,2,…,m; i=1,2,…,n(5.1.10)
它是每一个bj(j=1,2,…,m)所对应的n个后验概率p(a1|bj),p(a2|bj),…,p(an|bj)(j=1,2,…,m)中最大的一个值。如果把最大值所对应的信道输入符号记作a*,则有
p(a*|bj)≥p(ai|bj),i=1,2,…,n; j=1,2,…,m(5.1.11)
这就是说,要使平均错误译码概率达到最小,则有
p{F(bj)=ai|bj}=p(a*|bj)≥p(ai|bj),i=1,2,…,n; j=1,2,…,m
(5.1.12)
意味着,必须选择译码规则
F(bj)=a*,j=1,2,…,m(5.1.13)
而信源符号满足
p(a*|bj)≥p(ai|bj),i=1,2,…n; j=1,2,…,m(5.1.14)
这就是最大后验概率译码准则。该准则指出: 若p(a*|bj)≥p(ai|bj)(i=1,2,…,n; j=1,2,…,m)是信道输出端收到符号bj(j=1,2,…,m)后,推测信道输入符号ai(i=1,2,…,n)的n个后验概率p(ai|bj)(i=1,2,…,n; j=1,2,…,m)中最大的一个,即p(a*|bj)≥p(ai|bj)(i=1,2,…,n; j=1,2,…,m)则把接收符号bj(j=1,2,…,m)译成a*,即F(bj)=a*,j=1,2,…,m。用最大后验概率译码准则选择译码函数F(bj)=a*(j=1,2,…,m)构成的译码规则,一定可以使平均错误译码概率pe达到最小值,这是因为
pe=∑mj=1p(bj){1-p[{F(bj)=ai}|bj]}
≥∑mj=1p(bj){1-p[{F(bj)=a*}|bj]}
=∑mj=1p(bj){1-p(a*|bj)}
=∑mj=1p(bj)-∑mj=1p(bj)p(a*|bj)
=1-∑mj=1p(a*bj)=∑ni=1∑mj=1p(aibj)-∑mj=1p(a*bj)
=∑mj=1∑ni=1,ai≠a*p(aibj)=pemin(5.1.15)
由此可见,最大后验概率译码规则使平均错误译码概率达到最小值。因此当信源和信道给定,采用最大后验概率译码准则时,可使通信的可靠性最大。
通常,最大后验概率准则中后验概率的计算存在困难,且不方便。但是,由式(5.1.7)可得
p(a*|bj)=p(a*)p(bj|a*)p(bj),j=1,2,…,m(5.1.16)
考虑到p(ai|bj)=p(ai)p(bj|ai)p(bj),则在信道输入符号(信源输出符号)ai(i=1,2,…,n)的先验概率为
p(a1)=p(a2)=…=p(a*)=…=p(an)=1n(5.1.17)
它们与信道的每个输出符号bj(j=1,2,…,m)的n个后验概率p(ai|bj)(i=1,2,…,n; j=1,2,…,m)的大小相比,可以转化为与信道的每个输出符号bj(j=1,2,…,m)相关的n个前向概率(传递概率)p(bj|ai)之间的大小比较,即由
p(a*|bj)=p(a*)p(bj|a*)p(bj)≥p(ai|bj)=p(ai)p(bj|ai)p(bj)(5.1.18)
则有
p(bj|a*)≥p(bj|ai),i=1,2,…,n; j=1,2,…,m(5.1.19)
所以,在信道输入符号ai(i=1,2,…,n)的先验概率等概的条件下,最大后验概率准则等价于最大似然译码准则。显然,最大似然译码准则是在信道输入符号先验概率等概的特定条件下的最大后验概率准则,其平均错误译码概率同样可以达到最小值。
由此可见,在信道输入符号先验概率等概的特定条件下,采用最大似然准则所得到的最小平均错误译码概率取决于等概信道输入所含符号数n和信道的传递特性p(bj|ai),i=1,2,…,n; j=1,2,…,m。当信道的输入符号数n固定不变时,最小平均错误译码概率随信道传递特性p(bj|ai)(i=1,2,…,n; j=1,2,…,m)的变动而变动,这就为我们提供了一个继续降低最小平均错误译码概率并提高通信可靠性的方法,即在信道的输入符号先验概率等概的条件下,如果信道输入符号数固定不变,则可以通过改变信道的传输特性,使最小平均错误译码概率pemin进一步下降。实际上,这就是抗干扰信道编码的基本理论依据。
对于无记忆信道情形,码字的似然概率应等于组成该码字的各码元的似然概率的乘积(即联合条件概率等于各符号
概率的乘积)。因此,码字的最大似然概率也就是各码元似然概率乘积的最大化,即
maxp(r|Ci)=max∏Nj=1p(rj|Cij),i=1,2,…,M(5.1.20)
其中,r是信道输出码字矢量,Ci是信道第i个输入码字矢量,码字矢量的长度为N,M是码集中码字矢量的总个数。
为了使乘法运算简化为加法,取似然概率的对数,称为对数似然概率。由于对数函数的单调性,似然概率最大时,对数似然概率也最大化。于是,码字对数似然概率最大化可等效于对数似然概率之和的最大化,即
maxlogp(r|Ci)=max∑Nj=1logp(rj|Cij),i=1,2,…,M(5.1.21)
式中的对数可以e为底(自然对数),也可以2或10为底,M是码集中码字矢量的总个数。
下面作为一个特例,证明二进制对称信道(BSC)的最大似然译码准则可以简化为最小汉明距离译码准则。
对于BSC信道,当逐位比较发送码和接收码时,仅存在相同或不同两种可能,且两种可能发生的概率与信道的错误转移概率有关,为
p(rj|Cij)=pCij≠rj
1-pCij=rj(5.1.22)
如果r中有d个码元与Ci的码元不同,r与Ci的汉明距为d。显然,d代表在BSC信道传输过程中码元差错的个数,即
d=dis(r,Ci)=W(rCi)=∑Nj=1rjCij,i=1,2,…,M(5.1.23)
M是码集中码字矢量的总个数。此时的似然概率为
p(r|Ci)=∏Nj=1p(rj|Cij)=pd(1-p)N-d
=p1-pd(1-p)N,i=1,2,…,M
其中,M是码集中码字矢量的总个数,(1-p)N是常数。由于
0≤p≤12,导致
p1-p≤1,d越大时,似然概率越小。因此,最大似然函数maxp(r|Ci)的问题转化为求最小汉明距离dmin的问题。
汉明距离译码是一种硬判决译码。只要在接收端将发送码与接收码的各码元逐一比较,选择汉明距离最小的码字作为译码估值,就可以获得最大似然概率译码。由于BSC信道是对称的,因此,当发送的码字独立且等概率时,汉明距离译码是一种最佳译码。
5.2信道编码的基本概念
图53是简化的通信系统模型,其中信道可以是包括调制、解调和传输媒质在内的有线(含光纤)和无线的数字信道,也可以是包括网桥、路由器、网关、电缆(或光缆)和低层协议等在内的计算机通信网的数字信道。
图53简化的通信系统模型
信道编码器将输入的信息序列,每k个信息符号分成一组,记作m,称为信息组,其中的每一位称为信息元mi,i=1,2,…,k。通过信道编码器,产生一个码字C,长度为N,通常将R=k/N称为码率。码字C在有噪声的信道中传输,接收到r序列,通过信道译码器,获得译码后的信息m^。
5.2.1错误图样
首先了解在有噪信道中产生差错的特点,数据在信道中传输时受到各种干扰,这些干扰是使数据产生差错的主要原因。差错有两种基本形式: 一是随机错误,即数据序列中前后码元之间是否发生错误彼此无关,将产生随机错误的信道称为随机信道,以高斯白噪声为主体的信道就属于这类信道,如太空信道、卫星信道和同轴电缆信道等; 二是突发性错误,即错误之间有相关性,错误成串出现,将产生突发性错误的信道称为突发差错信道,实际的衰落信道、码间干扰信道均属于这类信道,如短波信道和移动通信信道等。
对于二进制数字通信系统,设信道输入的发送序列为C=0000…,由于干扰,信道输出的接收序列为r=0010…,表明接收序列的第3位发生错误e,即e=r-C,称为
错误图样。由于二进制数字通信系统中加法运算与减法运算等价,因此,e=rC或者r=Ce。若发送序列为00100000…,而接收序列为10111000…,此时错误图样为e=0010000…10111000…=10011000…,这种错误称为突发错误。突发错误的长度l等于第1个错误与最后一个错误之间的长度,该例中突发错误的长度为5。当然,如果获得错误图样e,由接收序列r可计算出发送的信息序列C^=er。
对于二进制对称信道,若信道的错误传递概率为ε,正确传递概率将为1-ε。N长的码字在这样的信道中传输时,发生一位随机错误的差错图样的概率为p(e1)=(1-ε)N-1ε,发生两位随机错误的差错图样的概率为p(e2)=(1-ε)N-2ε2,以此类推,发生k位随机错误的错误图样的概率为p(ek)=(1-ε)N-kεk。由于信道错误传递概率一般总是远小于1,因此有p(eN)<…
0,即I(X: Y)>R时,存在充分大的N,使2-N[I(X: Y)-R-3ε1]<ε1,从而
p-e<ε1+ε1=2ε1(5.3.8)
如果取输入分布p(ak)是达到信道容量C容量的分布,则此时I(X; Y)=C容量,于是当R0,总存在充分大的N,使p-e<ε。由于{C}是随机码集合,因此至少存在一个码C∈{C},使其平均错误概率满足p-e<ε。
香农只是证明了满足这种特性码的存在性,还不能按照他的证明方法得到很好的编码方法。由于随机编码所得到的码集很大,通过搜索得到好码的方法在实际中很难实现; 而且即使找到其中的好码,这种好的码字也是毫无结构的,这意味着译码时只能用查表的方式,在N很大的情况下,这一译码表所需要的存储量是难以接受的。因此,真正实用的信道编码还需要通过各种数学工具来构造,使码具有很好的结构以便于更好地译码。
5.3.2有噪信道编码逆定理
我们知道平均错误概率p-e与译码规则有关,而译码规则又由信道特性决定。由于信道中存在噪声,导致信道输出端出现错误,所以接收到输出符号后,对发送的是什么符号仍存在不确定性。因此,平均错误概率p-e与条件熵H(X|Y)之间有一定关系,这就是费诺(Fano)不等式,该不等式也是有噪信道编码逆定理证明的基础。
设离散无记忆信道的输入随机变量X取值于符号集A={a1,a2,…,ar},输出随机变量Y取值于符号集B={b1,b2,…,bs},p-e为某一译码规则的平均错误概率,则
H(X|Y)≤H(p-e,1-p-e)+p-elog(r-1)(5.3.9)
称为费诺不等式,其中H(·)为信息熵。此处p-e可以同pe。
证明: 由式(5.1.15)得
pe=∑sj=1∑rk=1,ak≠a*p(akbj)
1-pe=∑sj=1p(a*bj)
因此,
H(pe,1-pe)+pelog(r-1)=pelog1pe+(1-pe)log11-pe+pelog(r-1)
=∑sj=1∑rk=1,ak≠a*p(akbj)logr-1pe+∑sj=1p(a*bj)log11-pe
而
H(X|Y)=∑rk=1∑sj=1p(akbj)log1p(ak|bj)
=∑sj=1∑rk=1,ak≠a*p(akbj)log1p(ak|bj)+∑sj=1p(a*bj)log1p(a*|bj)
则
H(X|Y)-H(pe,1-pe)-pelog(r-1)
=∑sj=1∑rk=1,ak≠a*p(akbj)logpe(r-1)p(ak|bj)+∑sj=1p(a*bj)log1-pep(a*|bj)
≤∑sj=1∑rk=1,ak≠a*p(akbj)pe(r-1)p(ak|bj)-1loge+∑sj=1p(a*bj)1-pep(a*|bj)-1loge
=per-1∑sj=1∑rk=1,ak≠a*p(bj)-∑sj=1∑rk=1,ak≠a*p(ak,bj)+(1-pe)∑sj=1p(bj)-
∑sj=1p(a*bj)loge
=per-1(r-1)-pe+(1-pe)-(1-pe)loge
=0
其中用到了不等式lnx≤x-1。由此证得费诺不等式: H(X|Y)≤H(pe,1-pe)+pelog(r-1)。
下面给出有噪信道编码逆定理。
定理5.2: 有噪信道编码逆定理: 设离散无记忆信道的容量为C容量,R是消息传输率,则当R>C容量时,无论码长N有多长,必存在某一常数δ>0,使在码字等概率分布下平均错误概率p-e(N)≥δ。
证明: 对于任意ε>0,设M=2N(R+ε),X=X1X2…XN为输入随机序列,因为码字等概率分布,故H(X)=logM,因此I(X; Y)=H(X)-H(X|Y)=logM-H(X|Y)。又由于I(X; Y)≤NC容量,故logM-H(X|Y)≤NC容量。由费诺不等式得
logM-NC容量≤H(X|Y)
≤H(p-e(N),1-p-e(N))+p-e(N)log(M-1)
≤1+p-e(N)log(M-1)
<1+p-e(N)logM
于是
logM-NC容量-1logM1-NC容量+1logM>1-NC容量+1N(R+ε)
>1-NC容量+1N(C容量+ε)=Nε-1N(C容量+ε)
=ε-1NC容量+ε
由于εC容量+ε>0,故存在δ1>0和N0>0,当N>N0时,有p-e(N)≥δ1>0。又若对某一个固定的N,有p-e(N)=0,则logM-NC容量<0,即M=2N(R+ε)≤2NC容量与R>C容量矛盾,从而对任给N,有p-e(N)>0。因此,只需取δ=min{δ1,p-e(1),p-e(2),…,p-e(N0)},则对所有的N,都有p-e(N)>δ。当选用码字数(或消息数)M=2N(C容量+ε)时,信道的消息输出率为R=logMN=C容量+ε。这表明,信道消息传输率R已超过了信道容量,这是不可能的,既要使消息传输率大于信道容量而又无错误地传输消息是不可能的。
5.4信道编码方法
在通信中,由于码字序列是一种随机序列,接收端无法预知码元的取值,因而也无法识别其中有无错误。因此,可以在发送端的信息序列中增加一些差错控制元,由它们来校验是否出错,称为监督码元。这些监督码元和信息序列之间有确定的关系。信息序列和监督码元之间的关系不同,形成码的类型也不同,大体上分为两类: 分组码和卷积码。其中,分组码是把信息序列以每k个码元分组,编码器将每个信息组按照一定规律产生r个多余的码元(有时也称为校验元),形成一个长为n=k+r的码字。当分组码的信息序列与监督码元之间是线性关系时,即可用信息的线性方程组表示监督码元,这种分组码就称为线性分组码,如汉明码和循环码。卷积码则不仅考虑信息序列与监督码元之间的关联,还需考虑信息序列间的相关信息。码长越长,性能越好,但是译码复杂度越大。卷积码给出了一种利用分组间前后相关信息等效增加码长的方法。
5.4.1线性分组码
线性分组码建立在代数群论基础上,各个许用码字的集合构成了代数学中的群,它们具有以下的主要性质:
(1) 任意两个许用码字之和(对于二进制码这个和的含义是模二加)仍为一个许用码字,即线性分组码具有封闭性;
(2) 码字间的最小码距等于非零码的最小码重。
对于长度为n的二进制线性分组码,它有2n种可能的码组。从2n种码组中,可以选择M=2k个码组(kp2(1-p)n-2>…>pn,所以S对应最小重量错误图案E的可能性最大。
由于E=R+C,E的重量最小等同于R、C间的汉明距离最小,所以二进制的概率译码体现最小距离译码法则,也是最大似然译码法则。
上述的概率译码,每接收一个码字需要解一次线性方程,运算量非常大。由于伴随式的数目是有限的,共2n-k个。如果n-k不太大,可以换一种思路来考虑问题。预先对不同S取值的错误图样E求解方程组,再按最大概率译码从2k个解中取出一个最可能的错误图样E。将S取值与错误图样E相对应,再把发码与错误图样的组合作为可能接收到的码字列表出来,译码时就不必去解方程,而是在上述表格中查找发送码的码矢量,这个表称为标准阵列译码表。
在标准阵列译码表中,将没有任何差错时的收码R放在第1行,差错图案为全零,伴随式也为全零。由于对于(n,k)线性分组码有2k个码字,所有码表有2k列; 由于(n,k)线性分组码有2n-k个伴随式,所以从第2行至n+1行为差错重量是1的图样,以及由该差错图样导致的接收码,接下来C2n行为差错重量为2的图案,以此类推,直到全部2n-k个伴随式有解为止。
【例56】某(5,2)系统线性码的生成矩阵是G=10111
01101,设接收的码是R=
[10101],试构造出标准译码阵列表,并译码发送码的估值C^。
解: 由于该码是(5,2)系统线性码,所有码字的信息序列应该是
m=
[00],[01],[10],[11],这样通过生成矩阵获得的有效码字是
C1=[00000],C2=[10111],C3=
[01101],C4=[11010]
由生成矩阵,可得校验矩阵为
H=[PTI3]=11100
10010
11001
因此伴随式有2n-k=25-2=8种。差错图样中除了代表无差错的全零图样外,有1个差错的图样有5种,2个差错的图样有C25=10种,以此类推。根据概率译码准则,8种伴随式将对应于差错重量最轻的图样,所以应选一种0个差错的图样,5种1个差错图样和2种2个差错的图样。由此,对于5种1个差错的图样,可通过S=EHT求出其对应的伴随式; 再通过求解剩余伴随式方程组,获得2种2个差错的图样。值得注意的是,对于伴随式(011),将有22个解[00011]、[10100]、[01110]和[11001],重量为2的差错图样有两种,可以任意选择其中一种为伴随式[011]的解。因为对于该码来说,它的纠错能力t仅为1,两个差错是纠正不了的。对应的标准阵列译码表如表51所示。
表51(5,2)线性码的标准阵列译码
S1=000
E1+C1=00000
C2=10111
C3=01101
C4=11010
S2=111
E2=10000
00111
11101
01010
S3=101
E3=01000
11111
00101
10010
S4=100
E4=00100
10011
01001
11110
S5=010
E5=00010
10101
01111
11000
S6=001
E6=00001
10110
01100
11011
S7=011
E7=00011
10100
01110
11001
S8=110
E8=10001
10001
01011
11100
对于接收码[10101],直接查表可得它的子集头是[10111],因此译码输出为[10111]。
实际上,获得发码估值C^的方案有3种: (1)直接搜索码表; (2)先求伴随式找到行数; (3)先求伴随式,在表中查出对应的差错图案,由C=R+E5得到结果。
任意一个二元(n,k)线性分组码都有2n-k个伴随式,假如该码的纠错能力为t,则对于任何一个重量小于t的差错图案,都应有一个伴随式与之对应,所以伴随式的数目应满足条件
2n-k≥n
0+n
1+…+n
t=∑ti=0n
i(5.4.8)
上式称为汉明限(Hamming Bound),任何一种纠错能力为t的线性码都应满足以上条件。
定义5.5: 若某二元(n,k)线性分组码使式(5.4.8)成立,即2n-k=∑ti=0n
i,则将(n,k)线性分组码称为完备码。
迄今为止,完备码并不多见。t=1的汉明码,t=3的高莱码,长度n为奇数、由两个码字组成、满足dmin=n的任何二进制码,以及三进制的t=3的(11,6)码都属于完备码。
汉明码不是指一个码,而是指一类码,它是纠错能力t=1(既有二进制,又有非二进制)的完备的线性分组码的一类码的统称。二进制码长为n和信息位为k的汉明码服从如下规律: (n,k)=(2m-1,2m-1-m),其中,m=n-k。当m=3,4,5,6,7,8时,对应的汉明码分别为(7,4)、(15,11)、(31,26)、(63,57)、(127,120)和(255,247)。值得注意的是汉明码是一种完备码。
除此之外,汉明码的校验矩阵H具有特殊的性质。一个(n,k)的线性码校验矩阵有n-k行n列。而二进制n-k个码元能组合的列矢量的总数(全零矢量除外)是2n-k-1,恰好与二进制汉明码校验矩阵的列数n=2m-1相等。因此,对于汉明码,只要排列所有n-k个码元组成的所有列矢量(全零矢量除外),可构成一个汉明码校验矩阵,再通过初等操作可以获得系统形式校验矩阵H,从而得到生成矩阵。
高莱码是二进制(23,12)线性码,其最小距离dmin=7,纠错能力t=3。由于满足223-12=2048=1+23
1+23
2+23
3,因此它也是完备码。
定义5.6: 如果给每个码字添加奇偶校验位Ci(n+1)来对码字的所有比特进行校验,使满足Ci1+Ci2+…+Ci(n+1)等于0或1,就构成了一个二进制(n+1,k)线性码,称为扩展码。
在偶校验的情况下,若原来码字中1的个数为偶数,则添加的校验位为0; 若原码1的个数为奇数,则添加的检验位为1。于是,扩展码校验矩阵He可表示为
He=|0
0
H
- 0
11…11(5.4.9)
其中,reHTe=0。这时,偶校验后最小距离将增加1,检错能力也增加1。例如,在(23,12)高莱码上添加一位奇偶位即可获得(24,12)扩展高莱码,其最小码距dmin=8。
若把一定数量的信息设为零,(n,k)系统码可以缩短。把码的前e位设为0,从而将码(n,k)缩短成码(n-e,k-e)。
定义5.7: 在生成矩阵一定的条件下,由于信息组中的0和1结构对称、奇偶对称,因此码字的第1位m1=0的概率将为0.5。把第1位为1的所有码字去掉,剩下另一半第1位为0的码字舍去第1位后组成的新的(n-1,k-1)系统码,称为缩短码。
缩短码与原码具有相同的最小码距dmin。若(n,k)线性码的编码运算为C=mG,由于缩短码信息组的前一位是0,因此缩短码的编码运算为
Cs=msGs(5.4.10)
其中,Gs是G(k×n)去掉最左边l列及最上面l行后剩下的(n-l)×(k-l)矩阵。
另一方面,原码的校验矩阵H(n-k)×n缩短后为(n-k)×(n-l)的Hs,可见校验矩阵H与缩短后的校验矩阵Hs的行数是一致的,将H最左边的l列去掉得Hs。由于(k-i)/(n-i)j)个1; 列之间1的重叠数目小于或等于1。如式(5.5.1)是按定义构造的(12,3,4)LDPC码的校验矩阵H。在校验矩阵中,每行和每列的1元素的个数都是固定的。
H=
001001110000
110010000001
000100001110
010001100100
101000010010
000110001001
100110100000
000001010011
011000001100(5.5.1)
图526(12,3,4)规则LDPC
码Tanner图
除此之外,LDPC码还可以用Tanner图表示。上式(12,3,4)对应的Tanner图如图526所示。
在Tanner图中,左边的节点称为变量节点,右边的节点称为校验节点。每个变量节点对应LDPC码的一个码元,其个数等于码长n,即等于校验矩阵的列数。校验节点与校验方程对应,其个数等于校验方程的个数,即校验矩阵的行数。所以,Tanner图中的线与校验矩阵中的元素1是对应的。在Tanner图中与某节点相连的边的个数称为该节点的度。规则LDPC码中相同类型的节点度数应该是相同的,即所有变量节点的度也相同,所有校验节点的度也相同; 而非规则LDPC码的变量节点/校验节点的度是不同的。
LDPC码的译码算法主要是基于Tanner图结构的消息传递(Message Passing,MP)算法,该算法的性能随着量化阶数的增加而提高,同时复杂度也随之增加。其中性能最好的是置信传播算法(Belief Propagation,BP),当编码Tanner图中没有环时,它的性能可等效于最大似然算法。
BP算法可以由初始化过程和迭代过程两个步骤完成,具体如下。
(1) 初始化: 在进行迭代过程之前首先要给参数赋初值。令p0l=p(xl=0)(比特xl取0的先验概率),p1l=
p(xl=1)=1-p0l。对于每个满足Hml=1的(l,m),变量q0ml和q1ml分别被初始化为p0l和p1l。
(2) 迭代:
① 对每一个校验约束m和对应的每一个l∈L(m)计算两个概率,其中一个是r0ml,当xl=0,且其他比特{xl: l′≠l}对应于相互独立的概率分布时,{q0ml′,q1ml′}校验约束m得到满足的概率,即
r0ml=∑{xl′: l′∈L(m)|l}p∑l′∈L(m)|lx′l=0|xl=0×∏l′∈L(m)|lqxl′ml′(5.5.2)
另一个概率是r1ml,当xl=1时,校验约束得到的概率定义为
r1ml=∑{xl′: l′∈L(m)|l}p∑l′∈L(m)|lx′l=1|xl=1×∏l′∈L(m)|lqxl′ml′(5.5.3)
式中,概率内的求和为模2求和,条件概率的取值为0或1,取决于假设的x′l的值是否满足模2求和式
,L(m)|l是L(m)集合中去掉l后的其他元素。
上面这个复杂的计算可以根据前后向递归算法适当简化。定义
δqml=q0ml-q1ml(5.5.4)
可以得到
δrml=r0ml-r1ml=∏l′∈L(m)|lδqml′(5.5.5)
利用数学归纳法可以得到rxml(x=0或1)的计算式如下:
rxml=1+(-1)xδrml2(5.5.6)
经过简化后,rxml的计算量极大减少。
② 利用步骤①计算所得到r0ml的r1ml和更新概率值q0ml和q1ml。对于每个l计算下式:
q0ml=αmlp0l∏m′∈M(l)|mr0m′l(5.5.7)
q1ml=αmlp1l∏m′∈M(l)|mr1m′l(5.5.8)
其中,αml为归一化系数,使得q0ml+q1ml=1。
同时,计算出比特l取值为0和1的伪后验概率q0l和q1l,如下:
q0l=αlp0l∏m∈M(l)r0ml(5.5.9)
q1l=αlp1l∏m∈M(l)r1ml(5.5.10)
③ 当q1l>0.5时,令x^=1,反之令x^=0。如果校验方程Hx^=0 mod 2成立,则译码成功并结束,x=x^; 否则,若迭代次数少于预先设定的最大迭代次数T,则重复该迭代过程; 如果迭代次数已经超过所设定的最大迭代次数还是没有得到正确的译码,则译码失败。此时,部分译码的x^可以作为其他译码算法的有效译码起点。
BP算法的复杂度为码长的线性函数,并行实现可极大提高译码速度。BP算法的译码误码率随信噪比的增加而减少,没有误码率下降急速的差错平底特性的现象。无论是在理论上还是在实际应用中,BP译码都能够在高斯白噪声环境下达到接近信道限的性能。
MATLAB代码如下:
clear all
close all
enc = comm.LDPCEncoder; %创建LDPC编码器
dec = comm.LDPCDecoder; %创建LDPC译码器
mod = comm.QPSKModulator('BitInput',true); %创建调制器
chan = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)');
% AWGN信道
demod = comm.QPSKDemodulator('BitOutput',true,...
'DecisionMethod','Approximate log-likelihood ratio', ...
'VarianceSource','Input port'); %创建解调器
err = comm.ErrorRate;
snrVec = [0 0.2 0.4 0.6 0.65 0.7 0.75 0.8]; %信噪比范围
ber = zeros(length(snrVec),1);
for k = 1:length(snrVec)
chan.SNR = snrVec(k);
noiseVar = 1/10^(snrVec(k)/10);
errorStats = zeros(1,3);
while errorStats(2) <= 200 && errorStats(3) < 5e6
data = logical(randi([0 1],32400,1)); %产生二进制数据
encData = step(enc,data); %LDPC编码
modSig = step(mod,encData); %调制
rxSig = step(chan,modSig); %AWGN信道
demodSig = step(demod,rxSig,noiseVar); %解调
rxData = step(dec,demodSig); %LDPC译码
errorStats = step(err,data,rxData); %统计错误
end
ber(k) = errorStats(1);
reset(err)
end
semilogy(snrVec,ber,'-o')
grid
xlabel('SNR (dB)')
ylabel('误比特率')
运行结果如图527所示。
图527LDPC编码结果
5.5.4Polar码
Polar码是一种唯一被严格证明能够达到香农限的信道编码方法,现已成为5G中的中短码长纠错编码标准。2007年,E.Arikan基于信道极化理论首次提出Polar码。经过信道极化后,比特信道(bitchannel)被分为好与坏两种,而好比特信道通过Polar码的编码被选用于信息传输,极大地提升了信息传输的可靠性。
信道极化分为信道组合和信道分裂两个过程。其中,信道组合就是对二进制离散无记忆信道(BDMC)
W进行独立复
图528信道W到W2的组合图
制,通过一定的递归规则得到矢量信道。例如,在n=0时,对于N=2n=1信道,则是一个
BDMC信道,也就是W1ΔW; 当n=1,N=2n=2时,两个W1的独立信道可组合成一个W2信道,即W2:X2→Y2,其组合过程如图528所示,信道W2的转移概率可表达为: W2(y1,y2|u1,u2)=W(y1|u1u2)W(y2|u2),其中,为模2加。
当n=2,N=4时,由两个W2的独立信道可组合成一个W4信道X4→Y4,如图529所示,其转移概率为W4
(y41|u41)=W2(y21|u1u2,u3u4)W2(y43|u2,u4),其中y41=(y1y2y3y4),u41=(u1u2u3u4),R4是一置换矩阵,将(v1v2v3v4)置换为(v1v3v2v4)。于是,W4的输入(u1u2u3u4)与输入(x1x2x3x4)间关系可表示为x41=u41G4,其中G4=1000
1100
1010
1111。因此W4信道的转移概率可改写成
W4(y41|u41)=W4(y41|u41G4)(5.5.11)
该组合过程可以类推,即信道WN可以由两个WN/2的独立信道组合得到,并且WN的转移概率为
WN(yN1|uN1)=WN(yN1|uN1GN),yN1∈YN,uN1∈XN
(5.5.12)
其中,GN=BNFn,BN为置换矩阵,F=10
11。
信道分裂则是将组合后的信道WN映射成为N个比特信道,第i个比特信道的转移概率为
W(i)N(yN1,ui-11|ui)Δ∑
uNi+1∈XN-i12N-1WN(yN1|uN1)(5.5.13)
其中,(yN1,ui-11)是W(i)N的输出,ui是W(i)N的输入,i=1,2,…,N。图530展示了N=4时从信道W的4个拷贝到W(i)4的过程。最右端是4个独立信道W,通过蝶形运算得到两个矢量信道(W(1)2,W(2)2),对两个矢量信道(W(1)2,W(2)2)再一次蝶形运算得到W(i)4的每个比特信道。其中,蝶形结构右边两个结点代表相同且独立的信道,左边即是信道组合后分裂的结果,此过程可以不断进行。
图529信道W2到W4的组合图
图530从W到W4的变换过程示意图
根据信道极化理论,随着N逐渐增大,信道分裂得到的每一个比特信道的信道容量呈现出两极分化的趋势,即有一些比特信道的容量逐渐接近于1,而另一些比特信道的容量逐渐接近于0。因此,在实际的通信过程中,选择那些容量接近1的比特信道来传输信息,称为信息比特,而将容量接近0的比特信道赋予固定值(通常为全0),称为冻结比特,冻结比特这部分信息是已知的。信息比特和冻结比特所在位的集合分别被称为信息位和冻结位。
在Polar码中,比特信道的好与坏一般可用巴氏(Bhattacharyya)参数来衡量。巴氏参数Z(W)代表的是信道输入为0或1时,信息被错误判决的概率上界,其定义为
Z(W(i)N)=∑yN1∈YN∑ui-11∈Xi-1W(i)N(yN1,ui-11|0)W(i)N(yN1,ui-11|1)
(5.5.14)
1) Polar码的构造
Polar码的构造就是比特信道选择的过程,即选择那些好的比特信道来传输信息,这里好指的是巴氏参数趋近于0,或信道容量趋近于1。
对于BDMC信道,Polar码可表现为三元组参数(
W,N,K),其中,W表示BDMC信道,N为Polar码的码长,K是Polar码信息位的长度,信息位集合为
A{1,2,…,N}。Polar码构造的目标是使
∑i∈AZ(W(i)N)最小,即计算各比特信道巴氏参数{Z(W(i)N):1≤i≤N},并使信息位集合中的巴氏参数之和为最小,其中,Z(W(i)N)为第i比特信道的巴氏参数。从实现角度来讲,Polar码的构造问题转化
为判决问题,即在给定了信道下标的索引号i,i∈{1,2,…N}和门限值γ的情况下(γ∈[0,1]),依据AγΔ{i∈{1,2,…,N}:Z(W(i)N)<γ}来判决下标i对应的比特信道是否用来传输信息。
总的来说,Polar码的构造就是K个信息位索引号的选取。因此,通常,首先计算出各个比特信道巴氏参数的值,然后对计算出的巴氏参数值从小到大排序,最后挑选出前K个较小的巴氏参数值的比特信道索引组合成信息位,剩余的比特信道则为冻结位。常见的构造方法有基于Polar码的蒙特卡罗构造方法、基于BEC的构造方法、密度进化构造方法、TalVardy方法和高斯近似法等。
作为一种线性分组码,Polar码也可用生成矩阵来描述。给定长度为
N的Polar码,其中N=2n,其编码xN1=uN1GN,其中,xN1是编码码字,uN1为信息序列,GN为N×N的生成矩阵,且
GN=BNFn,BN为置换矩阵,F=10
11。通常情况下,信息位集合用A表示,冻结位集合则用Ac表示。若uA表示信息位信息,ucA表示冻结位信息,则编码过程可表示为
xN1=uAGN(A)uACGN(Ac)(5.5.15)
其中,GN(A)由矩阵GN中对应于集合A中各元素的行构成,GN(Ac)由矩阵GN中对应于集合Ac中各元素的行构成,且冻结位的取值对译码性能没有影响,常将置为0。于是,Polar码这种线性分组码编码用4个参数(N,K,A,uAC)表示,其中N为码长,K为信息位的个数,A和AC分别是信息位和冻结位,uAC是冻结位信息。
2) Polar的译码
Polar码的译码是将接收到的yN1恢复成发送信息序列uN1的过程,一般来说,译码方法会与其编码方法相适应。针对Polar码的结构,Arikan提出了连续删除(Successive Cancellation,SC)译码和置信传播(Belief Propagation,BP)译码算法,下面简单介绍SC译码。
SC译码是Polar码的核心译码算法,该算法是基于比特信道的概率似然比通过硬判决值进行译码,一个比特一个比特地译码,直到最后一个比特译码结束后才得到译码输出。
对于参数为(N,K,A,uAc)的Polar码,当要传输的信息序列与生成矩阵相乘后得到编码,再通过信道传输,在接收端获得接收序列yN1,其中,信息序列包括信息位uA和冻结位uAc。由于冻结位在编译码过程中保持不变,是已知的,所以在译码时如果是冻结位则直接译码,其估计值即为冻结位信息,
u^Ac=uAc; 如果是信息位,则通过
下式判别当前比特的估计值
hi(yN1,u^i-11)=0W(i)N(yN1,u^i-11|0)W(i)N(yN1,u^i-11|1)≥1
1其他
(5.5.16)
在译码过程中,通常把转移概率的比值定义为似然比(Likelihood Ratio,LR)
L(i)N(yN1|u^i-11)=W(i)N(yN1,u^i-11|0)W(i)N(yN1,u^i-11|1)(5.5.17)
将式(5.5.16)代入式(5.5.17)中,得到当前信息位的估值为
u^i=
0L(i)N(yN1,u^i-11)≥1
1其他(5.5.18)
SC译码算法的计算复杂度主要取决于译码过程中似然比的计算,而对于似然比的计算,Arikan给出了一种递归迭代计算方法
L(2i-1)N(yN1,u^2i-21)=L(i)N/2(yN/21,u^2i-21,ou^2i-21,e)L(i)N/2(yNN/2+1,u^2i-21,e)+1L(i)N/2(yN/21,u^2i-21,ou^2i-21,e)+L(i)N/2(yNN/2+1,u^2i-21,e)(5.5.19)
L(2i)N(yN1,u^2i-11)= [L(i)N/2(yN/21,u^2i-21,ou^2i-21,e)]1-2u^2i-1·L(i)N/2(yNN/2+1,u^2i-21,e)(5.5.20)
其中,L(2i-1)N表示N长序列中第(2i-1)比特标号(奇数)的似然比,L(2i)N是N长序列中第(2i)比特标号(偶数)的似然比,u^2i-21,o是u^2i-21序列中奇数位构成的序列,u^2i-21,e是u^2i-21序列中偶数位构成的序列。从上式可以看出,计算长度为N的似然比可以转化为计算两个长度为N/2的LR,即似然对(L(2i-1)N(yN1,u^2i-21),L2iN(yN1,u^2i-11)可以转换为计算似然对(L(i)N/2(yN/21,u^2i-21,ou^2i-21,e),L(i)N/2(yNN/2+1,u^2i-21,e)),当然N/2的LR继续利用式(5.5.19)和式(5.5.20),由N/4的LR似然对(L(i)N/4(yN/41,u^2i-21,ou^2i-21,e),L(i)N/4(yN/2N/4+1,u^2i-21,e))得到,以此类推,直到码长为1时终止。当码长为1时,LR的值由公式L(i)(yi)=W(yi|0)/W(yi|1)直
接计算得到。
图531显示了码长为8的Polar码的SC译码的因子图结构,其中,编码器参数为(8,5,{4,5,6,7,8},(0,0,0))。在该过程中,每个负责计算的节点会
图531Polar码的SC译码过程
向下发起一个LR的请求,从最左边到最右边依次进行。在最左边的第1列节点对应码长为8的LR请求,相应的第2列对应码长为4的LR请求,第3列对应码长为2的LR请求,第4列对应码长为1的LR请求。在图中每一个节点都对应两个标签,例如,第2列第2个节点带有22和(y41,u^41,eu^41,o)两个标签,其中,第1个标签指的是译码过程中该节点第22个被激活,第2个标签指的是要计算且保存的LR值,其中,数字1~32表明一共需要计算32个LR值。
译码时先从第1个节点开始激活,首先计算L(1)8(y81),但是L(1)8(y81)的值并不能直接得到,而是触发节点2和节点9,在触发这两个节点之后,节点1开始等待节点2和节点9返回的LR的值; 先激活节点2进行L(1)4(y41)的计算,同样节点2继续传递,触发节点3,节点3再触发节点4,到节点4时已经到了最右边一列,通过给定的信道信息可直接计算出L(1)1(y1),于是可将计算结果返回给触发节点3和节点23。对于节点3,除了获得节点4返回值
外,还需要继续向右侧传递,触发节点5获得L(1)1(y2)的值。对节点4和节点5的返回信息计算可得到节点3的LR值L(1)2(y21),并将其LR值返回给节点2。同前面的过程一样,节点2还需向右依次触发节点6、节点7和节点8,获得节点2的LR值L(1)4(y41),并将结果返回给节点1。同理,节点1还需要节点9的返回值,节点9的LR值计算过程如上类似。当节点9的LR值L(1)8(y85)返回给节点1后,节点1整合计算出L(1)8(y81),得到了第1个比特的似然值,由于u1是冻结位,因此直接置为0,并将其似然值传递给下一个信息比特,即触发节点16。
同第1个比特激活的过程一样,节点16触发后向右侧传递,需要节点2和节点9的值,而这两个节点的LR值已经保存,因此直接将已经获得的L(1)4(y41)和L(1)8(y85)两个LR值计算得到L(2)8(y81,u^1),由于u2是冻结位,因此也直接置u2=0,并传递给下一个信息比特。
计算下一个比特时,需激活节点17,计算节点17的值需要节点18和节点19的LR值,而节点18和节点19的LR值在前面的过程中已经被保存下来,因此可以直接计算得到L(3)8(y81,u^21)。由于u3是信息比特,因此需要根据得到的LR值来估计u3,当L(3)8(y81,u^21)≥1时,估值为0,否则估值为1。得到估计值后继续传递到下一比特的计算,直到依次得到u81的所有估值。
通过上面SC译码过程可以看到,译码器由蝶形组成,例如,节点2、3、18、6构成一个蝶形,以节点2和节点18为根的计算子树又可以继续分裂后得到以节点3和节点6为根的译码子树。显然,在一个以4个节点构成的蝶形进行译码时,最先被激活的是最左上方的节点,最后被激活的是左下方的节点。
因此,蝶形图在LR的计算上有时间约束,任何一个蝶形图,计算左下方的节点需要提供左上方节点的LR值,而只有得到右侧节点的LR值才能计算出左上方节点的LR值。因此,可以说SC译码算法是一种串行迭代过程,计算LR值的等待时间将造成译码的较大时延,且SC译码是一种顺序译码,前面的译码结果会对后续的译码产生影响。
若Pe(N,K,A,uAc)表示Polar码译码差错率,则其表达式为
Pe(N,K,A,uAc)=∑uA∈XK12K∑yN1∈YN:u^N1(yN1)≠uN1WN(yN1|uN1)
(5.5.21)
可以获得它与信息位巴氏参数之间的关系为
Pe(N,K,A,uAc)≤∑i∈AZ(W(i)N)(5.5.22)
因此,当信息位的选择使得∑i∈AZ(W(i)N)足够小时,如趋于0,则译码的差错概率也趋于0。
SC译码MATLAB代码如下:
function u_finish = decode(n,y,frozen_positions,frozen_bits)
%(阶数 接收值 冻结位序号 冻结位数字)
global sigma r_value r_flag max_number min_number
N=2^n; %N为码长,n为阶数
r_value(:,n+1)=exp(-2*y'./(sigma^2)); %根据信道接收值和信噪比计算LR
r_flag(:,n+1)=ones(N,1); %定义因子图的矩阵
u_finish=[];
t=1;
for i=1:1:N
likelihood_ratio=ww(n,(1:N),i,u_finish);
%(当前阶数 初始接收值序号 信道序号 译完比特位)
if ismember(i,frozen_positions) %判断是否为冻结位
u_finish(i)=frozen_bits(t); %冻结位信息发送双方已知,直接赋值
t=t+1;
else if likelihood_ratio>1 %如果不是冻结位,根据最左端的节点信息来判决译码结果
u_finish(i)=0; %如果 ifL(i)N(yN1,u^(i-1)1)≥1,译码结果为0
else u_finish(i)=1; %否则译码结果为1
end
end
end
end
function likelihood_ratio=ww(n,y,i,u)
% 计算似然比(阶数 接收值序号 信道序号 译完比特位)
global r_value r_flag nn max_number min_number
row=y(1)+ bit_reverse(i,n)-1;%对应在大矩阵中的行号
col=nn+1-n;%row是实际在大矩阵中的列号
if r_flag(row,col)==1
likelihood_ratio=r_value(row,col);
else
k=2^n;
y1=y(1:k/2);
y2=y(k/2+1:k);
kk=round(i/2);%向上取整
uue=u(2:2:2*kk-2);
uuo=u(1:2:2*kk-2);
uu=mod(uue+uuo,2);
if mod(i,2)==0
likelihood_ratio=feven(ww(n-1,y1,kk,uu),ww(n-1,y2,kk,uue),u(2*kk-1));%递归
if likelihood_ratio> max_number
likelihood_ratio = max_number;
end
else likelihood_ratio=fodd(ww(n-1,y1,kk,uu),ww(n-1,y2,kk,uue));
if likelihood_ratio> max_number
likelihood_ratio = max_number;
end
end
r_value(row,col)=likelihood_ratio;
r_flag(row,col)=1;
end
end
function likelihood_ratio=fodd(a,b) %奇数节点似然信息计算
likelihood_ratio=(a*b+1)/(a+b);
end
function likelihood_ratio=feven(a,b,c) %偶数节点似然信息计算
likelihood_ratio=a^(1-2*c)*b;
end
function num=bit_reverse(i,n)
num=1;
for k=n:-1:1
num=num+mod(i-1,2)*2^(k-1);
i=round(i/2);
end
end
码长1024、码率0.5的Polar码在高斯白噪声信道下的运行结果如图532所示。
图532Polar码编码结果
习题5
51设一个离散无记忆信道,其信道矩阵为
1212000
0121200
0012120
0001212
1200012
(1) 计算信道容量C。
(2) 找出一个长度为2的码,其信息传输率为(log5)/2(5个码字),如果按最大似然译码准则设计译码器,计算其译码器输出端平均错误译码概率Pe(设输入码字等概)。
(3) 有没有可能存在一个长度为2的码,使得每个码字的平均错误译码概率P(i)e=0(i=1,2,3,4,5),即对所有码字有pe=0?如果存在,请找出来。
52设离散无记忆信道的输入符号集X∈{0,1},输出符号集Y∈{0,1,2},信道矩阵为[pji]=121414
141214。若某信源输出两个等概消息s1和s2,现用信道输入符号集中的符号对s1和s2进行信道编码,以ω1=00代表s1,用ω2=11代表s2,试写出能使平均错误译码概率pe=pemin的译码规则,并计算
平均错误译码概率。
53设有一离散无记忆信道,其信道矩阵为
P=1/21/31/6
1/61/21/3
1/31/61/2
若p(x1)=1/2,p(x2)=p(x3)=1/4,试求最佳译码时的平均错误概率。
54写出构成二元域上4维4重矢量空间的全部矢量元素,并找出其中一个三维子空间及其相应的对偶子空间。
55一个线性分组码的监督矩阵为
H=100100110
101010010
011100001
101011101
求其生成矩阵以及码的最小距离dmin,并画出该编码器硬件逻辑连接图。
56将本章例59的(7,4)系统码缩短为(5,2)码,写出缩短码的生成矩阵、校验矩阵,及所有码字。
57列出本章例59的(7,4)汉明码的标准阵列译码表。若收码R=(0010100,0111000,1110010),由标准阵列译码表判断发码是什么。
58某线性二进码的生成矩阵为
G=0011101
0100111
1001110
(1) 用系统码 [IP] 的形式表示G。
(2) 计算该码的校验矩阵H。
(3) 列出该码的伴随式表。
(4) 计算该码的最小距离。
(5) 证明: 与信息序列101相对应的码字正交于H。
59设一个(15,4)循环码的生成多项式为g(x)=1+x+x5+x6+x10+x11。试求。
(1) 此码的监督多项式h(x)。
(2) 此码的生成矩阵(非系统码和系统码形式)。
(3) 此码的监督矩阵。
510设计一个(15,11)系统汉明码的生成矩阵G,以及由g(x)=1+x+x4生成的系统 (15,11)循环汉明码的编码器。
511计算(7,4)系统循环汉明码最小重量的可纠差错图案和对应的伴随式。
512某帧所含信息是(0000110101100010101100), 循环冗余校验码的生成多项式是CRCITUT规定的g(x)=x16+x12+x5+1。问附加在信息位后的CRC校验码是什么?
513某卷积码(2,1,3)的转移函数矩阵是G(D)=[1+D2,1+D+D2+D3],试
(1) 画出编码器结构图。
(2) 画出编码器的状态图。
(3) 求该码的自由距离df。
514某(2,1,4)卷积码,其两脉冲冲激响应(当输入信息为100…时所观察到的输出序列值)为g1=(11101),g2=(10011),试
(1) 画出该编码器结构图。
(2) 写出该码的生成矩阵。
(3) 若输入信息序列m=[11010001],求相应的码序列。
515某码率为1/2、约束长度K=3的二进制卷积码,其编码器如图533所示。
(1) 画出状态图和网格图。
(2) 求转移函数T(D),据此指出自由距离。
图533习题515图
516某卷积码G0=[100],G1=[101],G2=[111],
(1) 画出该码的编码器。
(2) 画出该码的状态图和网格图。
(3) 求出该码的转移函数和自由距离。
517某卷积码如图534所示。
(1) 画出该码的状态图。
(2) 求转移函数T(D)。
(3) 求该码的自由距离df,在格栅图上画出相应路径(与全0码字相距df的路径)。
(4) 当利用BSC信道进行数据传输时,接收序列为 10 01 00 11 10 00 00,试用维特比算法对接收序列进行译码的最可能原始信息序列。
图534习题517图