本發(fā)明涉及l(fā)dpc碼譯碼技術(shù)領(lǐng)域,特別涉及一種基于ldpc碼的局部動態(tài)譯碼方法。
背景技術(shù):
ldpc碼自1996年再次被發(fā)現(xiàn)以來,其譯碼算法(floodingbp算法)以其實(shí)現(xiàn)簡單,譯碼復(fù)雜度線性增加等特點(diǎn),成為了編譯碼領(lǐng)域焦點(diǎn)。而svnf-rbp算法為代表的動態(tài)bp譯碼算法雖然增加了殘差計算和搜索復(fù)雜度,同時也極大地提升了bp算法的譯碼性能。
svnf-rbp譯碼算法是一個異步動態(tài)消息迭代算法,每一次根據(jù)一個最大的校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差,定位下一個要更新的校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息。消息更新就是根據(jù)每次找到的最大殘差為序,沿著與ldpc碼相對應(yīng)的tanner圖中的邊來回傳遞,其消息傳遞主要包括了針對每一個變量節(jié)點(diǎn)的橫向計算和縱向計算兩個步驟,其中橫向計算就是校驗節(jié)點(diǎn)ci到變量節(jié)點(diǎn)vj的消息傳遞:
縱向計算就是變量節(jié)點(diǎn)vi到校驗節(jié)點(diǎn)cj的消息傳遞:
在bp譯碼算法中,最終是要依靠每個變量節(jié)點(diǎn)的最大似然比來做0、1判定。每一個變量節(jié)點(diǎn)都將接收來自信道的先驗概率(apriori)
似然比消息殘差計算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示計算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比。
svnf-rbp算法迭代過程在滿足以下條件之一時停止:
(1)所有的校驗方程都滿足。
(2)迭代次數(shù)達(dá)到設(shè)定的最大值。
svnf-rbp算法的具體過程為:
1)初始化所有mc,v=0;
2)初始化所有
3)計算所有r(mc,v);
4)對每一個vj,找出
5)計算
6)計算
7)如果所有校驗方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
對于bp迭代算法,異步策略一般都是通過加速譯碼收斂來提升譯碼性能。svnf-rbp算法能大幅提升bp譯碼性能,但是增加了大量的計算、搜索復(fù)雜度。因此,在提升譯碼性能的同時降低復(fù)雜度顯得尤為重要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的至少一種缺點(diǎn)與不足,提供一種基于ldpc碼的局部動態(tài)譯碼方法,該局部動態(tài)譯碼方法降低了殘差搜索和存儲復(fù)雜度,同時提升了譯碼性能。
本發(fā)明的目的通過下述技術(shù)方案實(shí)現(xiàn):
一種基于ldpc碼的動態(tài)bp譯碼方法,提出殘差具有時效性,采用最新產(chǎn)生的局部最大殘差確定消息的更新順序:
選定要更新的校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
具體的局部動態(tài)譯碼算法(lrbp):
1)初始化所有
2)初始化所有
3)計算所有r(mc,v);
4)找出
5)計算
6)計算
7)如果所有校驗方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
其中:mc,v泛指所有校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)的消息;
似然比消息殘差計算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示計算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比。
本方法提出殘差的產(chǎn)生具有時效性,通過尋找局部最大殘差來建立一個校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。
因此,本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果:
只從最新產(chǎn)生的殘差中找出最大的殘差,可在計算的同時進(jìn)行搜索,因此殘差不需要存儲,減少了存儲復(fù)雜度;最新產(chǎn)生的殘差也就是局部殘差,減少了搜索最大殘差的復(fù)雜度。
相對于svnf-rbp算法,本發(fā)明不但能提升了較少迭代次數(shù)的譯碼性能,還有效提升了高信噪比的譯碼性能。
附圖說明
圖1是算法lrbp的動態(tài)策略示意圖。
圖2是算法flooding,lbp,nwrbp,svnf-rbp和lrbp在碼長1944,碼率
圖3是算法svnf-rbp和lrbp在碼長1944,碼率
具體實(shí)施方式
下面結(jié)合實(shí)施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。
本發(fā)明是一種基于ldpc碼的局部動態(tài)譯碼方法,是針對ldpc碼的動態(tài)bp譯碼方法(lrbp),該方法提出殘差的產(chǎn)生具有時效性,通過尋找局部最大殘差來建立一個校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。
設(shè)n(vi)代表與變量節(jié)點(diǎn)vi相連的所有校驗節(jié)點(diǎn),n(vi)\cj則表示與變量節(jié)點(diǎn)vi相連的不包括校驗節(jié)點(diǎn)cj的所有其他校驗節(jié)點(diǎn);n(ci)代表與校驗節(jié)點(diǎn)(校驗方程)ci相連的所有變量節(jié)點(diǎn),n(ci)\vj則表示與校驗節(jié)點(diǎn)ci相連的不包括變量節(jié)點(diǎn)vj的所有其他變量節(jié)點(diǎn)?;ハ噙B接的變量節(jié)點(diǎn)和校驗節(jié)點(diǎn)消息函數(shù)可定義為
假設(shè)校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
首先,更新消息
其次,更新消息
最后,計算殘差
具體而言,本發(fā)明的算法迭代過程如下:
1)初始化所有mc,v=0;
2)初始化所有
3)計算所有r(mc,v);
4)找出
5)計算
6)計算
7)如果所有校驗方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
在動態(tài)bp譯碼算法的一次迭代過程中,要么校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)的消息計算量與bp算法相同,要么變量節(jié)點(diǎn)到校驗節(jié)點(diǎn)的消息計算量與bp算法相同,所有的仿真都將嚴(yán)格遵守這個規(guī)則。下表給出對此算法一次迭代過程的消息計算量,其中,
表1一次迭代中的校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息計算量
表2一次迭代中的變量節(jié)點(diǎn)到校驗節(jié)點(diǎn)消息計算量
表1、2中,floodingbp算法作為同步消息更新算法,lbp算法作為異步非動態(tài)消息更新算法,僅作參考。
動態(tài)算法nwrbp算法與svnf-rbp算法都是采用校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息最大殘差,最大殘差計算公式:r(mk)=||fk(m)-mk||∞,其中r(mk)表示最大消息殘差,m表示計算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比,來找出下一個要更新的校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息,然后展開一個實(shí)質(zhì)的消息更新過程,兩個算法都需要對殘差進(jìn)行存儲,所不同的是nwrbp算法是在全部非零校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差中選取下一個要優(yōu)先更新的消息,而svnf-rbp算法則是在每個變量節(jié)點(diǎn)覆蓋范圍中的非零校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差中選取下一個要優(yōu)先更新的消息。
下面給出相關(guān)算法主要特征:
nwrbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、計算所有r(mc,v);
4)、在所有非零殘差中挑選最大殘差
5)、對每一個vk∈n(ci),計算
6)、對每一個ca∈n(vk),計算
7)、對每一個vb∈n(ca)\vk,計算
8)、如果所有校驗方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),那么結(jié)束譯碼,否則返回步驟4。
svnf-rbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、計算所有r(mc,v);
4)、對每一個vi,對所有vb∈n(ca)\vi(ca∈n(vi)),在所有非零殘差
5)、計算
6)、對每一個ca∈n(vmax)\cmax,計算
7)、對每一個vb∈n(ca)\vmax,計算
8)、如果所有校驗方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),那么結(jié)束譯碼,否則返回步驟4。
從上述算法描述可看出,該lrbp算法與nwrbp和svnf-rbp算法都采用校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)似然比值絕對殘差定位方法,不同的是lrbp算法區(qū)別殘差產(chǎn)生的時間,只使用最新產(chǎn)生的殘差;而nwrbp和svnf-rbp算法對不同時間產(chǎn)生的殘差給予的是無差別對待,對所有殘差一視同仁??紤]到svnf-rbp是目前動態(tài)算法中最具代表性的,因此lrbp算法將主要與svnf-rbp算法進(jìn)行對比。
如圖1所示,黑色圓圈表示已經(jīng)被更新的變量節(jié)點(diǎn),黑色方框表示已經(jīng)被更新的校驗節(jié)點(diǎn)。動態(tài)異步消息更新策略步驟如下,首先如圖1(a)所示,選出校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
圖2列出了包括floodingbp、lbp在內(nèi)的nwrbp,svnf-rbp和lrbp在碼長1944,碼率
圖3給出了碼長1944,碼率
本發(fā)明公開一種基于ldpc碼的動態(tài)譯碼方法——lrbp(localresidualbp),該方法不但能減少殘差的搜索和存儲復(fù)雜度,同時還能提升較小迭代次數(shù)內(nèi)的譯碼性能(svnf-rbp算法在較小迭代次數(shù)內(nèi)幾乎沒有性能提升),高信噪比時譯碼性能也明顯優(yōu)于svnf-rbp算法。
lrbp算法首先提出殘差具有時效性,也就是不同時間產(chǎn)生的殘差,其作用也不盡相同。lrbp算法只關(guān)注最新產(chǎn)生的殘差,在最新產(chǎn)生的殘差中找出最大殘差來建立校驗節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。由于最新產(chǎn)生的殘差是由最新的消息更新產(chǎn)生,因此總是能用最新的消息去更新下一個消息,這一行為起到加速收斂的效果,提升了譯碼性能。同時,最新殘差中搜索最大殘差,可在計算的同時進(jìn)行,因此不需要存儲殘差,搜索的范圍減小,有效降低了動態(tài)譯碼算法的存儲搜索復(fù)雜度。
上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。