本發(fā)明屬于數(shù)字通信和數(shù)字存儲(chǔ)領(lǐng)域,特別涉及一種遞歸的分組馬爾可夫疊加編碼方法。
背景技術(shù):
設(shè)計(jì)可逼近信道容量且有有效的編譯碼算法的信道編碼,對(duì)于實(shí)現(xiàn)高效可靠的數(shù)據(jù)傳輸有著重要意義。自從shannon于1948年提出了著名的信道編碼定理,人們一直致力于研究和設(shè)計(jì)可逼近信道容量的好碼。berrou等人于1993年提出了turbo碼,并驗(yàn)證了采用迭代譯碼算法的turbo碼可逼近信道容量。通常,turbo碼以兩個(gè)或多個(gè)卷積碼作為分量碼進(jìn)行級(jí)聯(lián),其中不同分量碼的輸入為信息序列經(jīng)過不同交織器交織后的序列。turbo碼的提出是信道編碼領(lǐng)域的重要里程碑,之后,人們研究和發(fā)現(xiàn)了更多可逼近信道容量的好碼。低密度奇偶校驗(yàn)碼(low-densityparity-checkcode,ldpccode)也是一類可逼近信道容量的糾錯(cuò)碼,可采用基于turbo原理的迭代譯碼方法來譯碼。近年發(fā)展起來的極化碼和空間耦合ldpc碼也是被證明可逼近香農(nóng)限的好碼。
在turbo碼中,為獲得優(yōu)秀的性能,需要選擇遞歸的卷積碼作為其分量碼。pfister等指出,在使用多層級(jí)聯(lián)碼時(shí),相對(duì)非遞歸的卷積碼情況,遞歸的卷積碼需要更少的級(jí)聯(lián)階數(shù)來將輕重量的輸入序列映射成重量隨長度線性增加的輸出序列。
分組馬爾可夫疊加編碼(中山大學(xué),一種分組馬爾可夫疊加編碼方法[p]:cn105152060a)也是一類可逼近信道容量的好碼。分組馬爾可夫疊加編碼是一種由短碼構(gòu)造大卷積碼的編碼方法,其中的短碼稱為基本碼。分組馬爾可夫疊加編碼可視為一種級(jí)聯(lián)碼,其外碼是短碼(這里稱為基本碼),內(nèi)碼是碼率為1的非遞歸卷積碼(其編碼輸入信息為數(shù)據(jù)塊)。分組馬爾可夫疊加編碼有簡單的編碼算法。采用簡單的重復(fù)碼和奇偶校驗(yàn)碼作為基本碼,分組馬爾科夫疊加編碼可以通過分時(shí)來實(shí)現(xiàn)多碼率的編碼(中山大學(xué),一種基于分時(shí)的分組馬爾可夫疊加編碼的多碼率碼編碼方法[p]:cn104410428a)。分組馬爾可夫疊加編碼可以采用一種基于軟信息的滑窗迭代譯碼算法來譯碼,并通過選擇一個(gè)合適的譯碼延遲d來獲得好的錯(cuò)誤性能。以上提及的分組馬爾可夫疊加編碼方法為非遞歸的,其有諸多優(yōu)點(diǎn),但是,以重復(fù)碼和奇偶校驗(yàn)碼作為基本碼時(shí),通常需要很大的編碼記憶長度m來逼近信道容量。而記憶長度m越大,所需的譯碼延遲d越大,相應(yīng)的譯碼復(fù)雜度也越高,這使得非遞歸的分組馬爾可夫疊加編碼方法不適用于某些對(duì)延遲和運(yùn)算復(fù)雜度要求較高的系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于針對(duì)上述現(xiàn)有技術(shù)中的不足,提供了一種遞歸的分組馬爾可夫疊加編碼方法。一方面,本發(fā)明所提出的編碼方法擁有非遞歸的分組馬爾可夫疊加編碼方法的大多數(shù)優(yōu)點(diǎn),譬如可逼近信道容量、編碼簡單和構(gòu)造靈活。另一方面,相對(duì)非遞歸的分組馬爾可夫疊加編碼方法,本發(fā)明提出的遞歸的分組馬爾可夫疊加編碼方法僅需要較小的記憶長度來逼近信道容量,并因此擁有更低的譯碼復(fù)雜度和譯碼延遲。記憶長度為3的遞歸的分組馬爾可夫疊加編碼方法,可實(shí)現(xiàn)比記憶長度為12的非遞歸的分組馬爾可夫疊加編碼方法更低的錯(cuò)誤平層。
本發(fā)明采用的技術(shù)方案是:一種遞歸的分組馬爾可夫疊加編碼方法,其特征在于:以碼長為n,信息位長度為k的短碼為基本碼,將長度為k=kbl的信息序列u編碼成長度為n=nb(l+t)的碼字c;這里,b,l,t,m為非負(fù)整數(shù),l為耦合長度,其代表長度為kb的等長分組的數(shù)量,t為結(jié)尾長度,m為編碼記憶長度,所述編碼方法包括以下步驟:
步驟一、將長度為k=kbl的信息序列u劃分為l個(gè)等長分組u=(u(0),u(1),…,u(l-1)),每個(gè)分組長度為kb;對(duì)于時(shí)刻t=-1,-2,…,-(m-1),-m,把長度為nb的序列c(t)初始化設(shè)置為全零序列,即c(t)=0;
步驟二、在t=0,1,…,l-1時(shí)刻,將長度為kb的序列
首先,對(duì)于1≤i≤m,將序列c(t-i)送入交織器πi,得到交織后長度為nb的序列w(i);
然后,將v(t)和w(1),w(2),…,w(m)送入逐符號(hào)混疊器s,得到長度為nb的序列c(t);
步驟三、在t=l,l+1,…,l+t-1時(shí)刻,將長度為kb的全零序列u(t)送入編碼器c,得到長度為nb的全零序列v(t),并結(jié)合反饋的c(t-1),c(t-2),…,c(t-m)計(jì)算碼字c的第t個(gè)子序列c(t)。所述的v(t)結(jié)合反饋的c(t-1),c(t-2),…,c(t-m)計(jì)算碼字c的第t個(gè)子序列c(t),按照步驟二進(jìn)行。
本發(fā)明所述的編碼方法中,信息序列u可以是二元序列,也可以是多元序列。編碼器c可以是任意類型的編碼器。交織器πi可以是任意類型的交織器,1≤i≤m。
本發(fā)明所述的編碼方法中,若序列v(t)和w(1),w(2),…,w(m)是二元或多元序列,序列的元素為有限域符號(hào),那么逐符號(hào)混疊器s是逐符號(hào)有限域加權(quán)和運(yùn)算器,其功能如下:輸出長度為nb的序列c(t),c(t)的第j個(gè)分量
本發(fā)明所述的編碼方法中,若序列v(t)和w(1),w(2),…,w(m)是多元序列,序列的元素是整數(shù)符號(hào),那么逐符號(hào)混疊器s是逐符號(hào)模加權(quán)和運(yùn)算器,其功能如下:輸出長度為nb的序列c(t),c(t)的第j個(gè)分量
本發(fā)明的編碼方法編碼后得到的碼字c=(c(0),c(1),…,c(l+t-1))經(jīng)調(diào)制后被送入信道。接收端接收到向量y=(y(0),y(1),…,y(l+t-1)),其中y(t)為對(duì)應(yīng)碼字子序列c(t)的接收序列。接收端根據(jù)接收向量y和信道特征,進(jìn)行譯碼并得到發(fā)送序列u的估計(jì)
本發(fā)明所述的譯碼方法中,傳遞和處理的消息為變量的概率分布或與之等價(jià)的其它量。每個(gè)碼字子序列c(t)對(duì)應(yīng)一個(gè)譯碼層,共有l(wèi)+t個(gè)譯碼層。譯碼層包括“=”節(jié)點(diǎn)、“πi”節(jié)點(diǎn)、“s”節(jié)點(diǎn)和“c”節(jié)點(diǎn)這4類節(jié)點(diǎn)。設(shè)定譯碼滑窗窗口d和最大迭代次數(shù)imax。當(dāng)接收端接收到y(t),y(t+1),…,y(t+d-1)(t=0,1,…,l-1),開始譯碼獲取發(fā)送消息u(t)的估計(jì)
(y1)對(duì)于j=t,t+1,…,t+d-1,如果j≤l+t-1,根據(jù)接收的向量y(j)和信道特征計(jì)算c(j)的后驗(yàn)概率分布;初始化迭代次數(shù)計(jì)數(shù)器i=0;
(y2)對(duì)于j=t,t+1,…,t+d-1,如果j≤l+t-1,處理第j層消息,把第j層的消息傳遞到第j+1,j+2,…,j+m層;否則,執(zhí)行步驟(y3);
(y3)對(duì)于j=t+d-1,t+d-2,…,t+1,如果j≤l+t-1,處理第j層消息,把第j層的消息傳遞到第j-1,j-2,…,j-m層;否則,執(zhí)行步驟(y4);
(y4)設(shè)置i=i+1;如果譯碼達(dá)到最大迭代次數(shù)i=imax,停止迭代,硬判決獲取發(fā)送消息u(t)的估計(jì)
本發(fā)明所述的譯碼方法中,所述的處理第j層消息,按如下步驟進(jìn)行:
首先,在“=”節(jié)點(diǎn)處,處理并傳遞到“πi”節(jié)點(diǎn)和“s”節(jié)點(diǎn)的外信息,i=1,2,…,m;
其次,在“πi”節(jié)點(diǎn)處,處理并傳遞從節(jié)點(diǎn)“=”到節(jié)點(diǎn)“s”或從節(jié)點(diǎn)“s”到節(jié)點(diǎn)“=”的外信息,i=1,2,…,m;
然后,在“s”節(jié)點(diǎn)處,處理并傳遞到“πi”節(jié)點(diǎn)、“c”節(jié)點(diǎn)和“=”節(jié)點(diǎn)的外信息,i=1,2,…,m;
最后,在“c”節(jié)點(diǎn)處,使用軟輸入軟輸出譯碼,更新到“s”節(jié)點(diǎn)的外信息,并更新譯碼器的譯碼輸出信息。
本發(fā)明具有以下優(yōu)點(diǎn):
1、本發(fā)明提出的遞歸的分組馬爾可夫疊加編碼方法,具有可逼近信道容量、編碼簡單、構(gòu)造靈活等優(yōu)點(diǎn)。
2、本發(fā)明提出的遞歸的分組馬爾可夫疊加編碼方法,與非遞歸的分組馬爾可夫疊加編碼方法相比,僅需要較小的記憶長度來逼近信道容量,并因此擁有更低的譯碼復(fù)雜度和譯碼延遲。
3、本發(fā)明提出的遞歸的分組馬爾可夫疊加編碼方法,與非遞歸的分組馬爾可夫疊加編碼方法相比,譯碼性能有很低的錯(cuò)誤平層。在記憶長度為3時(shí),可實(shí)現(xiàn)比非遞歸的分組馬爾可夫疊加編碼方法記憶長度為12時(shí)更低的錯(cuò)誤平層。
綜上所述,本發(fā)明提出了一種遞歸的分組馬爾可夫疊加編碼方法,具有可逼近信道容量、編碼簡單、構(gòu)造靈活等優(yōu)點(diǎn)。與非遞歸的分組馬爾可夫疊加編碼方法相比,本發(fā)明有更低的譯碼延遲和譯碼復(fù)雜度,譯碼性能有很低的錯(cuò)誤平層。
附圖說明
圖1遞歸的分組馬爾可夫疊加編碼方法的編碼框圖。
圖2遞歸的分組馬爾可夫疊加編碼方法的譯碼框圖。
圖3記憶長度為2時(shí),遞歸的分組馬爾可夫疊加編碼方法在bpsk-awgn信道上的ber性能曲線。
圖4記憶長度為3時(shí),遞歸的分組馬爾可夫疊加編碼方法在bpsk-awgn信道上的ber性能曲線。
具體實(shí)施方式
以下描述兩個(gè)具體實(shí)施例用于補(bǔ)充說明本發(fā)明的實(shí)施步驟和優(yōu)勢(shì)。
實(shí)施例1
參照?qǐng)D1,長度為k=kbl=1×5000×988的二元信息序列u劃分為l=988個(gè)等長分組u=(u(0),u(1),…,u(987)),每個(gè)分組長度為kb=5000?;敬a編碼器c使用一個(gè)碼長n=2,信息位長度k=1的重復(fù)碼。本實(shí)例中,編碼記憶長度m=2,使用兩個(gè)隨機(jī)交織器。逐符號(hào)混疊器s采用逐比特二元域和運(yùn)算器。結(jié)尾長度t設(shè)置為與譯碼延遲d相同,即t=d。參照?qǐng)D1,其編碼方法包括以下步驟:
步驟一、把信息序列u劃分為988個(gè)等長分組u=(u(0),u(1),…,u(987)),每個(gè)分組長度為5000;對(duì)于t=-1,-2,把長度為nb=10000的序列c(t)初始化設(shè)置為全零序列,即c(t)=0;
步驟二、在t=0,1,…,987時(shí)刻,將長度為kb=5000的序列
首先,將序列c(t-1)和c(t-2)送入交織器,得到交織后長度為nb=10000的序列w(1)和w(2);
然后,將v(t)和w(1),w(2)送入逐符號(hào)混疊器s,按如下操作得到長度為nb=10000的輸出序列c(t):
步驟三、在t=988,…,987+t時(shí)刻,將長度為kb=5000的全零序列u(t)送入編碼器c,得到長度為nb=10000的全零序列v(t),并結(jié)合反饋的c(t-1)和c(t-2)計(jì)算碼字c的第t個(gè)子序列c(t)。
碼字c=(c(0),c(1),…,c(987+t))經(jīng)bpsk調(diào)制后送入awgn信道,接收端接收到對(duì)應(yīng)碼字c的接收序列y=(y(0),y(1),…,y(987+t))。設(shè)定最大迭代次數(shù)imax=1000。當(dāng)接收端接收到y(t),y(t+1),…,y(t+d-1),進(jìn)行譯碼并得到發(fā)送消息序列u的估計(jì)
(y1)對(duì)于j=t,t+1,…,t+d-1,如果j≤987+t,根據(jù)接收的向量y(j)和信道特征計(jì)算c(j)的后驗(yàn)概率分布;初始化迭代次數(shù)計(jì)數(shù)器i=0;
(y2)對(duì)于j=t,t+1,…,t+d-1,如果j≤987+t,處理第j層消息,把第j層的消息傳遞到第j+1和j+2層;否則,執(zhí)行步驟(y3);
(y3)對(duì)于j=t+d-1,t+d-2,…,t+1,如果j≤987+t,處理第j層消息,把第j層的消息傳遞到第j-1和j-2層;否則,執(zhí)行步驟(y4);
(y4)設(shè)置i=i+1;如果譯碼達(dá)到最大迭代次數(shù)imax=1000,停止迭代,硬判決獲取發(fā)送消息u(t)的估計(jì)
仿真結(jié)果見圖3。從圖3可見,隨著譯碼延遲d的增大,遞歸的分組馬爾可夫疊加編碼方法在瀑布區(qū)和錯(cuò)誤平層誤比特率性能都變優(yōu)。采用譯碼延遲為d=12,遞歸的分組馬爾可夫疊加編碼方法即使在誤比特率為10-8時(shí)也沒有出現(xiàn)錯(cuò)誤平層,在誤比特率為10-8時(shí)距離香農(nóng)限約0.7db。從圖中也可以看到,相同記憶長度m=2時(shí),本發(fā)明提出的遞歸的分組馬爾可夫疊加編碼方法比非遞歸的分組馬爾可夫疊加編碼方法有更低的錯(cuò)誤平層。
實(shí)施例2
參照?qǐng)D1,長度為k=kbl=1×5000×988的二元信息序列u劃分為l=988個(gè)等長分組u=(u(0),u(1),…,u(987)),每個(gè)分組長度為kb=5000?;敬a編碼器c使用一個(gè)碼長n=2,信息位長度k=1的重復(fù)碼。本實(shí)例中,編碼記憶長度m=3,使用三個(gè)隨機(jī)交織器。逐符號(hào)混疊器s采用逐比特二元域和運(yùn)算器。結(jié)尾長度t設(shè)置為與譯碼延遲d相同,即t=d。參照?qǐng)D1,其編碼方法包括以下步驟:
步驟一、把信息序列u劃分為988個(gè)等長分組u=(u(0),u(1),…,u(987)),每個(gè)分組長度為5000;對(duì)于t=-1,-2,-3,把長度為nb=10000的序列c(t)初始化設(shè)置為全零序列,即c(t)=0;
步驟二、在t=0,1,…,987時(shí)刻,將長度為kb=5000的序列
首先,將序列c(t-1),c(t-2)和c(t-3)送入交織器,得到交織后長度為nb=10000的序列w(1),w(2)和w(3);
然后,將v(t)和w(1),w(2),w(3)送入逐符號(hào)混疊器s,按如下操作得到長度為nb=10000的輸出序列c(t):
步驟三、在t=988,…,987+t時(shí)刻,將長度為kb=5000的全零序列u(t)送入編碼器c,得到長度為nb=10000的全零序列v(t),并結(jié)合反饋的c(t-1),c(t-2)和c(t-3)計(jì)算碼字c的第t個(gè)子序列c(t)。
碼字c=(c(0),c(1),…,c(987+t))經(jīng)bpsk調(diào)制后送入awgn信道,接收端接收到對(duì)應(yīng)碼字c的接收序列y=(y(0),y(1),…,y(987+t))。設(shè)定最大迭代次數(shù)imax=1000。當(dāng)接收端接收到y(t),y(t+1),…,y(t+d-1),進(jìn)行譯碼并得到發(fā)送消息序列u的估計(jì)
(y1)對(duì)于j=t,t+1,…,t+d-1,如果j≤987+t,根據(jù)接收的向量y(j)和信道特征計(jì)算c(j)的后驗(yàn)概率分布;初始化迭代次數(shù)計(jì)數(shù)器i=0;
(y2)對(duì)于j=t,t+1,…,t+d-1,如果j≤987+t,處理第j層消息,把第j層的消息傳遞到第j+1和j+2層;否則,執(zhí)行步驟(y3);
(y3)對(duì)于j=t+d-1,t+d-2,…,t+1,如果j≤987+t,處理第j層消息,把第j層的消息傳遞到第j-1和j-2層;否則,執(zhí)行步驟(y4);
(y4)設(shè)置i=i+1;如果譯碼達(dá)到最大迭代次數(shù)imax=1000,停止迭代,硬判決獲取發(fā)送消息u(t)的估計(jì)
仿真結(jié)果見圖4。從圖4可見,隨著譯碼延遲d的增大,遞歸的分組馬爾可夫疊加編碼方法在瀑布區(qū)和錯(cuò)誤平層的誤比特率性能都變優(yōu)。采用譯碼延遲為d=11時(shí),遞歸的分組馬爾可夫疊加編碼方法即使在誤比特率為10-8時(shí)也沒有出現(xiàn)錯(cuò)誤平層。從圖中也可以看到,記憶長度m=3的遞歸的分組馬爾可夫疊加編碼方法甚至比記憶長度m=12的非遞歸的分組馬爾可夫疊加編碼方法擁有更低的錯(cuò)誤平層。
以上所述,僅是本發(fā)明的實(shí)施例,并非對(duì)本發(fā)明作任何限制,凡是根據(jù)本發(fā)明技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡單修改、變更已經(jīng)等效結(jié)構(gòu)變化,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍內(nèi)。