本發(fā)明屬于數(shù)字通信差錯控制編碼領(lǐng)域,具體涉及一種采用LDPC碼編碼的通信系統(tǒng)的錯誤概率估計方法。
背景技術(shù):
在數(shù)字通信系統(tǒng)中,衡量糾錯碼性能的指標是比特或碼字的錯誤概率,比特或碼字的錯誤概率反映了系統(tǒng)的可靠性。目前,獲取編碼通信系統(tǒng)錯誤概率的方法有三大類:解析法,計算機仿真方法及基于硬件平臺的仿真方法。針對碼長為有限長的LDPC碼的性能估計,現(xiàn)有的解析法應(yīng)用起來非常困難;并且基于硬件平臺的仿真方法的開發(fā)周期長、成本高、可移植性差,因此仿真方法的應(yīng)用獲得了極大的推廣。
目前,蒙特卡羅(Monte Carlo,MC)法是糾錯碼性能估計中最常用的仿真方法。它被廣泛應(yīng)用于估計通信系統(tǒng)的各個參量,其中最常見的,是估計通信系統(tǒng)的錯誤概率。但是,LDPC碼在高信噪比下的錯誤概率很低,運用MC法估計該類碼的性能時,估計器方差的收斂速度緩慢,需要耗費大量的仿真時間。
針對該問題,為減小仿真時間,研究者們提出了重點采樣(Importance Sampling,IS)法,該方法是一種能降低估計器方差的仿真方法,一定程度上解決了MC法在估計低錯誤概率時遇到的問題,已在LDPC碼的性能仿真中獲得了廣泛應(yīng)用,縮短了仿真時間。這種方法的關(guān)鍵在于選取一個合適的偏置分布,使導(dǎo)致譯碼錯誤的樣本點數(shù)在仿真總樣本數(shù)中所占的比例升高,從而降低錯誤概率估計器的方差,縮短仿真時間。最早應(yīng)用于LDPC碼性能仿真中的IS法是經(jīng)典IS法,在該方法中,偏置分布的獲取依賴于分析碼字結(jié)構(gòu)及錯誤區(qū)域特性,當(dāng)碼字結(jié)構(gòu)是非規(guī)則結(jié)構(gòu),且仿真中采用迭代譯碼時,上述分析變得十分困難,使得經(jīng)典的IS法不能估計非規(guī)則結(jié)構(gòu)的LDPC碼的性能。
自適應(yīng)重點采樣(Adaptive Importance Sampling,AIS)方法是上述經(jīng)典IS方法的一種改進方法,它無需分析LDPC碼的碼字結(jié)構(gòu)或搜索陷阱集,能夠在有限次的迭代過程中自適應(yīng)地獲得趨近于最優(yōu)的偏置分布,因而能靈活應(yīng)用于各種類型的LDPC碼中。雙自適應(yīng)重點采樣(Dual Adaptive Importance Sampling,DAIS)法和快速平坦直方圖(Fast Flat Histogram,F(xiàn)FH)法是AIS法在糾錯碼性能估計領(lǐng)域中的發(fā)展和應(yīng)用。該類方法利用一個預(yù)先定義的變量來控制偏置分布的更新,使偏置分布逐漸趨近于最優(yōu)。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在以下缺點和不足:
AIS方法和DAIS方法的收斂速度較慢,導(dǎo)致所需的樣本數(shù)較多。
為解決上述問題,本發(fā)明提供了一種快速收斂的錯誤概率估計方法。該方法引入一個輔助函數(shù),在DAIS法偏置分布的基礎(chǔ)上乘以該輔助函數(shù),人為地提高了仿真預(yù)設(shè)區(qū)域Ω內(nèi)的噪聲被抽取的概率,使得每次迭代過程中從原偏置分布中抽取的噪聲僅落入Ω內(nèi),最后引入權(quán)重以消除兩次偏置的影響。當(dāng)仿真收斂時,得到該區(qū)域內(nèi)概率質(zhì)量函數(shù)的估計值,進一步獲得LDPC碼的錯誤概率。該方法與DAIS方法相比,能夠加快仿真的收斂速度,減少仿真所需的樣本數(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種快速收斂的估計LDPC碼錯誤概率的方法,能加快傳統(tǒng)的雙自適應(yīng)重點采樣仿真的收斂速度,減少所需的仿真樣本數(shù),并且能夠精確地估計采用LDPC碼編碼的通信系統(tǒng)在高信噪比下的錯誤概率,詳見下文描述。
一種快速收斂的估計LDPC碼錯誤概率的方法。所述方法包括以下步驟:
(1)利用蒙特卡羅仿真方法確定參考信噪比SNRref;
(2)輸入待仿真的信噪比SNRobj,判斷輸入信噪比SNRobj是否小于SNRref,當(dāng)SNRobj≤SNRref時,采用蒙特卡羅法估計系統(tǒng)的錯誤概率,流程結(jié)束;當(dāng)SNRobj>SNRref時,執(zhí)行步驟(3);
(3)定義控制變量V,將V的范圍劃分為若干個子區(qū)間,確定可信區(qū)間;定義輔助函數(shù),確定仿真預(yù)設(shè)區(qū)域Ω;
(4)估計在SNRobj下噪聲落入V的第k個子區(qū)間且導(dǎo)致譯碼錯誤的概率Perr,k,obj;
(5)估計在SNRobj下導(dǎo)致譯碼錯誤的所有噪聲中,落入V的第k個子區(qū)間的噪聲占總數(shù)的條件概率Pk|err,obj;
(6)計算在SNRobj下的錯誤概率Perr,obj。
所述利用蒙特卡羅仿真方法確定參考信噪比SNRref的步驟具體為:
(1.1)初始化SNRref為一合適值;
(1.2)采用蒙特卡羅仿真方法估計SNRref下系統(tǒng)的錯誤概率;
(1.3)判斷所得錯誤概率是否在區(qū)間[10-4,10-3]之內(nèi),當(dāng)錯誤概率落在區(qū)間[10-4,10-3]之內(nèi)時,得到SNRref;當(dāng)錯誤概率小于10-4時,SNRref減小一個步長ΔSNR,執(zhí)行步驟(1.2)~(1.3)直至滿足判斷條件,得到SNRref;當(dāng)錯誤概率大于10-3時,SNRref增加一個步長ΔSNR,執(zhí)行步驟(1.2)~(1.3)直至滿足判斷條件,得到SNRref。
所述定義控制變量V,將V的范圍劃分為若干個子區(qū)間,確定可信區(qū)間;定義輔助函數(shù),確定仿真預(yù)設(shè)區(qū)間Ω具體為:
(3.1)控制變量其中n為LDPC碼的碼長,zl是噪聲z的第l個分量,當(dāng)zl與調(diào)制后的信號符號相反時,H(qlzl)=1,當(dāng)zl與調(diào)制后的信號符號相同時,H(qlzl)=0;
(3.2)將V的取值范圍劃分為若干個子區(qū)間,SNRref下的劃分步驟具體為,
(3.2.1)將SNRref下的控制變量范圍[Vmin,ref,Vmax,ref]和子區(qū)間數(shù)目Lref暫設(shè)定為[0,1]和1000,子區(qū)間的長度ΔV=(Vmax,ref-Vmin,ref)/Lref;
(3.2.2)運行不包含譯碼的無約束仿真,獲得仿真樣本;
(3.2.3)當(dāng)仿真樣本數(shù)超過107時,選取第一個噪聲數(shù)不為零的子區(qū)間k對應(yīng)的V值為Vmin,ref,選取最后一個噪聲數(shù)不為零的子區(qū)間k對應(yīng)的V值為Vmax,ref;
(3.2.4)將[Vmin,ref,Vmax,ref]劃分為Lref=L0個子區(qū)間,L0可根據(jù)不同的LDPC碼的參數(shù)設(shè)定,并計算ΔV0=(Vmax,ref-Vmin,ref)/L0;
(3.3)確定可信區(qū)間具體為,
(3.3.1)采用包含譯碼的無約束仿真估計在SNRref下噪聲落入V的第k個子區(qū)間,且導(dǎo)致譯碼錯誤的聯(lián)合概率Perr,k,ref;采用約束仿真估計SNRref下在導(dǎo)致譯碼錯誤的所有噪聲中,落入V的第k個子區(qū)間的噪聲占總數(shù)的條件概率Pk|err,ref;
(3.3.2)選取聯(lián)合概率Perr,k,ref不為零的一段連續(xù)區(qū)域;
(3.3.3)在Perr,k,ref不為零的連續(xù)區(qū)域內(nèi),從最左端開始,選取子區(qū)間數(shù)為δ的區(qū)域并暫定為[V*,V**];
(3.3.4)在子區(qū)間數(shù)為δ的區(qū)域內(nèi)計算錯誤概率Perr,ref=Perr,k,ref/Pk|err,ref,與MC的仿真結(jié)果進行對比,當(dāng)錯誤概率Perr,ref與MC的仿真結(jié)果之間的相對誤差小于等于10%時,得到可信區(qū)間[V*,V**],當(dāng)相對誤差大于10%時,保持區(qū)域內(nèi)的子區(qū)間數(shù)為δ,增大區(qū)間左右端點的值,重復(fù)步驟(3.3.4)以修正可信區(qū)間[V*,V**];
(3.4)輔助函數(shù)其中β>1,γ=2;Ω為[kmin,L]。
所述估計在SNRobj下噪聲落入V的第k個子區(qū)間且導(dǎo)致譯碼錯誤的概率Perr,k,obj具體為:
(4.1)初始化不包含譯碼的無約束仿真中的控制變量范圍[Vmin,obj,Vmax,obj],子區(qū)間長度ΔV及子區(qū)間的數(shù)目Lobj,具體為,
(4.1.1)將SNRobj下的控制變量范圍[Vmin,obj,Vmax,obj]和子區(qū)間數(shù)目Lobj暫設(shè)定為[0,V**]和1000,子區(qū)間的長度ΔV=(Vmax,obj-Vmin,obj)/Lobj;
(4.1.2)運行不包含譯碼的無約束仿真,獲得仿真樣本;
(4.1.3)選取噪聲數(shù)不為零且序號k最小的子區(qū)間對應(yīng)的V值為Vmin,obj,Vmax,obj=V**;
(4.1.4)將[Vmin,obj,Vmax,obj]劃分為Lobj個子區(qū)間,Lobj=(Vmax,obj-Vmin,obj)/ΔV0;
(4.2)運行包含譯碼的無約束仿真,估計Perr,k,obj。
所述估計在SNRobj下導(dǎo)致譯碼錯誤的所有噪聲中,落入V的第k個子區(qū)間的噪聲占總數(shù)的條件概率Pk|err,obj具體為:
(5.1)初始化約束仿真中的控制變量范圍[V′min,obj,V′max,obj],子區(qū)間長度ΔV及子區(qū)間的數(shù)目L'obj;具體為,
(5.1.1)將[V′min,obj,V′max,obj]暫設(shè)定為[0,Vmax,obj],即[0,V**],子區(qū)間長度ΔV=ΔV0,運行包含譯碼的約束仿真,獲得仿真樣本;
(5.1.2)選取第一個噪聲數(shù)目不等于零的子區(qū)間對應(yīng)的V值為V′min,obj,則控制變量范圍為[V′min,obj,V**];
(5.1.3)計算L'obj=(V′max,obj-V′min,obj)/ΔV=(V**-V′min,obj)/ΔV0;
(5.2)運行約束仿真,估計Pk|err,obj。
所述計算在SNRobj下的錯誤概率Perr,obj具體為:
在可信區(qū)間內(nèi)計算平均值
所述步驟(3.2.2)、(4.1.2)中的不包含譯碼的無約束仿真具體為:
1)設(shè)定噪聲個數(shù)i=0,迭代次數(shù)j=1,第一次迭代過程中需要的總噪聲數(shù)目為N1,噪聲落入控制變量第k個子區(qū)間的概率其中1≤k≤L;
2)選取一個導(dǎo)致譯碼器出現(xiàn)判決錯誤的噪聲z0,i增1;
3)采用Metropolis算法生成一個新的噪聲,i增1;
4)計算新的噪聲落入的控制變量子區(qū)間k,k內(nèi)的噪聲數(shù)增1;
5)若i<N1,重復(fù)步驟3)~5);否則,執(zhí)行步驟6);
6)采用Berg遞歸公式計算
7)若輸出否則,i=0,j增1,下一次迭代過程中的總樣本數(shù)等于本次迭代中總樣本數(shù)的1.3倍,重復(fù)步驟2)至7),直至輸出
所述步驟(4.2)中包含譯碼的無約束仿真具體為:
1)設(shè)定噪聲個數(shù)i=0,迭代次數(shù)j=1,迭代過程中需要的總噪聲數(shù)目為N1,N1',第一次迭代中
2)選取一個導(dǎo)致譯碼器出現(xiàn)判決錯誤的噪聲z0,i增1;
3)采用Metropolis算法生成一個新的噪聲,i增1;
4)計算新的噪聲落入控制變量的子區(qū)間號k,k內(nèi)的噪聲數(shù)增1;
5)將新的噪聲加在全零碼字上,送入LDPC譯碼器;若譯碼器輸出端的錯誤碼字數(shù)為1,第k個子區(qū)間內(nèi)的錯誤幀數(shù)增1;若譯碼器輸出端的錯誤碼字數(shù)為0,第k個子區(qū)間內(nèi)的錯誤幀數(shù)不變;
6)若i<N1,重復(fù)步驟3)~6)直至不滿足判斷條件;否則,執(zhí)行步驟7);
7)采用Berg遞歸公式計算
8)若計算Ω區(qū)域內(nèi)的概率和j增1,執(zhí)行步驟9);否則,i=0,j增1,重復(fù)步驟2)~8),直至執(zhí)行步驟9);
9)采用Metropolis算法從引入了輔助函數(shù)之后的偏置分布中抽取一個新的噪聲,i增1;計算新的噪聲落入的控制變量的區(qū)間號k,k內(nèi)的噪聲數(shù)增1;
10)將新的噪聲加在全零的LDPC碼字上,送入譯碼器進行判決;若新的噪聲導(dǎo)致譯碼器出現(xiàn)判決錯誤,k內(nèi)的錯誤幀數(shù)增1;若未導(dǎo)致錯誤,k內(nèi)的錯誤幀數(shù)不變;
11)若i<N1',重復(fù)步驟9)~11),直至判斷條件成立,執(zhí)行步驟12);否則,執(zhí)行步驟12);
12)采用Berg遞歸公式計算進一步計算
13)若輸出并計算Perr|k;否則,i=0,j增1,重復(fù)步驟9)~13),直到Ω區(qū)域內(nèi)的Pk估計值收斂,輸出并計算Perr|k;
14)計算Perr,k=PkPerr|k。
所述步驟(3.3.1)、(5.1)、(5.2)中約束仿真具體為:
1)設(shè)定噪聲個數(shù)i=0,迭代次數(shù)j=1,迭代過程中需要的總噪聲數(shù)目為N2,N'2,第一次迭代中
2)選取一個導(dǎo)致譯碼器出現(xiàn)判決錯誤的噪聲z0,i增1;
3)采用修改后的Metropolis算法生成一個新的噪聲,i增1;
4)計算新的噪聲落入控制變量的子區(qū)間號k,k內(nèi)的噪聲數(shù)增1;
5)若i<N2,重復(fù)步驟3)~5)直至判斷條件不成立;否則,執(zhí)行步驟6);若判斷條件成立;
6)采用Berg遞歸公式計算
7)若計算Ω區(qū)域內(nèi)的概率和j增1,執(zhí)行步驟8);否則,i=0,j增1,重復(fù)步驟2)~7),直至滿足執(zhí)行步驟8);
8)采用修改后的Metropolis算法從引入了輔助函數(shù)之后的偏置分布中抽取一個新的噪聲,i增1;計算新的噪聲落入的控制變量的區(qū)間號k,k內(nèi)的噪聲數(shù)增1;
9)若i<N'2,重復(fù)步驟8)~9),直至i=N'2,執(zhí)行步驟10);否則,執(zhí)行步驟10);
10)采用Berg遞歸公式計算進一步計算
11)若輸出并計算Pk|err;否則,i=0,j增1,重復(fù)步驟8)~11),直到Ω區(qū)域內(nèi)的Pk|err估計值收斂,輸出并計算Pk|err。
所述的無約束仿真的步驟3)修改后的Metropolis算法具體為:
1)提取噪聲個數(shù)i,迭代次數(shù)j,噪聲z*,(i),表示噪聲維數(shù)的l=1;
2)令噪聲的第l維分量的下一個可能狀態(tài)其中,ε2為最大步長因子,調(diào)整ε2使得每一次迭代過程中被接受的狀態(tài)數(shù)目除以總的狀態(tài)數(shù)目接近0.234,Δz~N(0,σ2);
3)產(chǎn)生兩個服從U(0,1)均勻分布的隨機數(shù)α1與α2,判斷
4)若l等于碼長n,得到下一個可能的狀態(tài)執(zhí)行步驟5);否則,l增1,重復(fù)步驟2)~4),直至滿足條件l=n,執(zhí)行步驟5);
5)計算與
6)判斷E表示能夠?qū)е伦g碼器出現(xiàn)判決錯誤的噪聲的集合;
7)輸出z*,(i+1)。
本發(fā)明引入一個輔助函數(shù),使得噪聲幾乎全部落入V值較大的區(qū)域,加快了該區(qū)域內(nèi)記錄噪聲數(shù)目的直方圖趨于平坦的速度,進而加快了仿真的收斂速度,獲得了精確的LDPC碼的錯誤概率。
附圖說明
圖1是本發(fā)明的快速收斂的估計LDPC碼錯誤概率方法的流程圖;
圖2是估計Perr,k,obj的流程圖;
圖3是圖2中的Metropolis算法的流程圖;
圖4是估計Pk|err,obj的流程圖;
圖5是圖4中的修改后的Metropolis算法的流程圖;
圖6是本發(fā)明的方法和DAIS方法的直方圖在Ω區(qū)域內(nèi)的收斂速度的對比示意圖;
圖7是MacKay(96,48)LDPC碼的仿真結(jié)果圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的快速收斂的估計LDPC碼錯誤概率的方法做詳細說明。
如圖1所示,本發(fā)明包括以下六個步驟,
(1)利用蒙特卡羅仿真方法確定參考信噪比SNRref;
(2)輸入待仿真的信噪比SNRobj,判斷輸入信噪比SNRobj是否小于SNRref,當(dāng)SNRobj≤SNRref時,采用蒙特卡羅法估計系統(tǒng)的錯誤概率,流程結(jié)束;當(dāng)SNRobj>SNRref時,執(zhí)行步驟(3);
(3)定義控制變量V,將V的范圍劃分為若干個子區(qū)間;定義輔助函數(shù),確定仿真預(yù)設(shè)區(qū)域Ω;
(4)估計在SNRobj下噪聲落入V的第k個子區(qū)間且導(dǎo)致譯碼錯誤的概率Perr,k,obj;
(5)估計在SNRobj下導(dǎo)致譯碼錯誤的所有噪聲中,落入V的第k個子區(qū)間的噪聲占總數(shù)的條件概率Pk|err,obj;
(6)計算在SNRobj下的錯誤概率Perr,obj。
以下分別介紹上述六個步驟的具體實施步驟。
所述的步驟(1)具體為
(1.1)初始化SNRref為一合適值;
(1.2)采用蒙特卡羅仿真方法估計SNRref下系統(tǒng)的錯誤概率;
(1.3)判斷所得錯誤概率是否在區(qū)間[10-4,10-3]之內(nèi),當(dāng)錯誤概率落在區(qū)間[10-4,10-3]之內(nèi)時,得到SNRref;當(dāng)錯誤概率小于10-4時,SNRref減小一個步長ΔSNR,執(zhí)行步驟(1.2)~(1.3)直至滿足判斷條件,得到SNRref;當(dāng)錯誤概率大于10-3時,SNRref增加一個步長ΔSNR,執(zhí)行步驟(1.2)~(1.3)直至滿足判斷條件,得到SNRref。
所述的步驟(3)具體為:
(3.1)控制變量其中n為LDPC碼的碼長,zl是噪聲z的第l個分量,當(dāng)zl與調(diào)制后的信號符號相反時,H(qlzl)=1,當(dāng)zl與調(diào)制后的信號符號相同時,H(qlzl)=0;
(3.2)將V的取值范圍劃分為若干個子區(qū)間,SNRref下的劃分步驟具體為,
(3.2.1)將SNRref下的控制變量范圍[Vmin,ref,Vmax,ref]和子區(qū)間數(shù)目Lref暫設(shè)定為[0,1]和1000,子區(qū)間的長度ΔV=(Vmax,ref-Vmin,ref)/Lref;
(3.2.2)運行不包含譯碼的無約束仿真,獲得仿真樣本;
(3.2.3)選取第一個噪聲數(shù)不為零的子區(qū)間k對應(yīng)的V值為Vmin,ref,選取最后一個噪聲數(shù)不為零的子區(qū)間k對應(yīng)的V值為Vmax,ref;
(3.2.4)將[Vmin,ref,Vmax,ref]劃分為Lref=L0個子區(qū)間,L0可根據(jù)不同的LDPC碼的參數(shù)設(shè)定,并計算ΔV0=(Vmax,ref-Vmin,ref)/L0;
(3.3)確定可信區(qū)間具體為,
(3.3.1)采用包含譯碼的無約束仿真估計在SNRref下噪聲落入V的第k個子區(qū)間,且導(dǎo)致譯碼錯誤的聯(lián)合概率Perr,k,ref;采用約束仿真估計SNRref下在導(dǎo)致譯碼錯誤的所有噪聲中,落入V的第k個子區(qū)間的噪聲占總數(shù)的條件概率Pk|err,ref;
(3.3.2)選取聯(lián)合概率Perr,k,ref不為零的一段連續(xù)區(qū)域;
(3.3.3)在Perr,k,ref不為零的連續(xù)區(qū)域內(nèi),從最左端開始,選取子區(qū)間數(shù)為δ的區(qū)域并暫定為[V*,V**];
(3.3.4)在子區(qū)間數(shù)為δ的區(qū)域內(nèi)計算錯誤概率Perr,ref=Perr,k,ref/Pk|err,ref,與MC的仿真結(jié)果進行對比,當(dāng)錯誤概率Perr,ref與MC的仿真結(jié)果之間的相對誤差小于等于10%時,得到區(qū)間[V*,V**],當(dāng)相對誤差大于10%時,保持區(qū)域內(nèi)的子區(qū)間數(shù)為δ,增大區(qū)間左右端點的值,重復(fù)步驟(3.3.4)以修正區(qū)間[V*,V**];
(3.4)輔助函數(shù)其中β>1,γ=2;Ω為[kmin,L]。
所述的步驟(4)具體為:
(4.1)初始化不包含譯碼的無約束仿真中的控制變量范圍[Vmin,obj,Vmax,obj],子區(qū)間長度ΔV及子區(qū)間的數(shù)目Lobj,具體為,
(4.1.1)將SNRobj下的控制變量范圍[Vmin,obj,Vmax,obj]和子區(qū)間數(shù)目Lobj暫設(shè)定為[0,V**]和1000,子區(qū)間的長度ΔV=(Vmax,obj-Vmin,obj)/Lobj;
(4.1.2)運行不包含譯碼的無約束仿真,獲得仿真樣本;
(4.1.3)選取噪聲數(shù)不為零且序號k最小的子區(qū)間對應(yīng)的V值為Vmin,obj,Vmax,obj=V**;
(4.1.4)將[Vmin,obj,Vmax,obj]劃分為Lobj個子區(qū)間,Lobj=(Vmax,obj-Vmin,obj)/ΔV0;
(4.2)如圖2所示,運行包含譯碼的無約束仿真,估計Perr,k,obj,具體為,
(4.2.1)設(shè)定噪聲個數(shù)i=0,迭代次數(shù)j=1,迭代過程中需要的噪聲數(shù)目為N1和N1',第一次迭代中
(4.2.2)從原始高斯分布中抽取一個噪聲z0,若z0能夠?qū)е伦g碼器出現(xiàn)判決錯誤,令初始噪聲等于z0,i增1;否則,重復(fù)步驟(4.2.2),直至z0導(dǎo)致譯碼器出現(xiàn)判決錯誤,令初始噪聲等于z0,i增1;
(4.2.3)采用Metropolis算法生成一個新的噪聲z*,(i)=(z1,…,zn),其中n為碼長,i增1;
(4.2.4)計算新的噪聲z*,(i)落入的控制變量的子區(qū)間號k=(V(z*,(i))-Vmin,obj)/ΔV;第k個所述子區(qū)間內(nèi)的噪聲數(shù)目增1;
(4.2.5)將新的噪聲加在全零碼字上,送入LDPC譯碼器;若譯碼器輸出端的錯誤碼字數(shù)為1,第k個子區(qū)間內(nèi)的錯誤幀數(shù)加1;若譯碼器輸出端的錯誤碼字數(shù)為0,第k個子區(qū)間內(nèi)的錯誤幀數(shù)不變;
(4.2.6)若i<N1,重復(fù)步驟(4.2.3)~(4.2.6)直至不滿足判斷條件;否則,執(zhí)行步驟(4.2.7);
(4.2.7)采用如下Berg遞歸公式計算第j+1次迭代中(1≤k≤L)
其中
(4.2.8)若計算Ω區(qū)域內(nèi)的概率和j增1,執(zhí)行步驟(4.2.9);否則,i=0,j增1,重復(fù)所述步驟(4.2.2)~(4.2.8),直至滿足收斂條件,計算執(zhí)行步驟(4.2.9);
(4.2.9)采用Metropolis算法從引入了輔助函數(shù)之后的偏置分布中抽取一個新的噪聲z*,(i)=(z1,…,zn),i增1;計算新的噪聲落入的控制變量的區(qū)間號k=(V(z*,(i))-Vmin,obj)/ΔV,k內(nèi)的噪聲數(shù)增1;
(4.2.10)將噪聲z*,(i)加在全零的LDPC碼字上,送入所述譯碼器進行判決,若新的噪聲導(dǎo)致譯碼器出現(xiàn)判決錯誤,增1;否則,不變;
(4.2.11)若i≤N1',重復(fù)所述步驟(4.2.9)~(4.2.11),直至i=N1',執(zhí)行步驟(4.2.12);否則,執(zhí)行步驟(4.2.12);
(4.2.12)采用Berg遞歸公式計算第j+1次迭代中(1≤k≤L)
其中
進一步,
(4.2.13)若輸出并計算執(zhí)行步驟(4.2.14);否則,i=0,j增1,重復(fù)步驟(4.2.9)~(4.2.13),直到Ω區(qū)域內(nèi)的Pk,obj估計值收斂,輸出并計算Perr|k,obj,執(zhí)行步驟(4.2.14)。
(4.2.14)計算Perr,k,obj=Pk,objPerr|k,obj。
如圖3所示,步驟(4.2.3)中所述Metropolis算法具體為:
1)提取噪聲個數(shù)i,迭代次數(shù)j,噪聲z*,(i),表示噪聲維數(shù)的l=1;
2)令噪聲的第l維分量的下一個可能狀態(tài)其中,ε1為最大步長因子,調(diào)整ε1使得每一次迭代過程中被接受的狀態(tài)數(shù)目除以總的狀態(tài)數(shù)目接近0.234,Δz~N(0,σ2);
3)產(chǎn)生兩個服從U(0,1)均勻分布的隨機數(shù)α1與α2,判斷
4)若l等于碼長n,得到下一個可能的狀態(tài)執(zhí)行步驟5);否則,l增1,重復(fù)步驟2)~4),直至滿足條件l=n,執(zhí)行步驟5);
5)計算與
6)判斷
7)輸出z*,(i+1)。
所述的步驟(5)具體為:
(5.1)初始化約束仿真中的控制變量范圍[V′min,obj,V′max,obj],子區(qū)間長度ΔV及子區(qū)間的數(shù)目L'obj;具體為,
(5.1.1)將[V′min,obj,V′max,obj]暫設(shè)定為[0,Vmax,obj]即[0,V**],子區(qū)間長度ΔV=ΔV0,運行包含譯碼的約束仿真,獲得仿真樣本;
(5.1.2)選取第一個噪聲數(shù)目不等于零的子區(qū)間對應(yīng)的V值為V′min,obj,則控制變量范圍為[V′min,obj,V**];
(5.1.3)計算L'obj=(V′max,obj-V′min,obj)/ΔV=(V**-V′min,obj)/ΔV0;
(5.2)如圖4所示,運行約束仿真,估計Pk|err,obj,具體為:
(5.2.1)設(shè)定噪聲個數(shù)i=0,迭代次數(shù)j=1,迭代過程中需要的總噪聲數(shù)目為N2和N'2,第一次迭代中
(5.2.2)初始噪聲等于z0,i加1;
(5.2.3)采用修改后的Metropolis算法生成一個新的噪聲z*,(i)=(z1,…,zn),其中n為碼長,i加1;
(5.2.4)計算新的噪聲z*,(i)落入的所述控制變量的子區(qū)間號k=(V(z*,(i))-V′min,obj)/ΔV,第k個所述子區(qū)間內(nèi)的噪聲數(shù)目增1;
(5.2.5)若i<N2,重復(fù)所述步驟(5.2.3)~(5.2.5),直至不滿足判斷條件,執(zhí)行步驟(5.2.6);否則,執(zhí)行步驟(5.2.6);
(5.2.6)采用Berg遞歸公式計算第j+1次迭代中(1≤k≤L'obj)
其中
(5.2.7)若計算Ω區(qū)域內(nèi)的概率和j增1,執(zhí)行步驟(5.2.8);否則,i=0,j增1,下一次迭代過程中總的仿真樣本數(shù)N2=1.3×N2,重復(fù)所述步驟(5.2.2)~(5.2.7),直至滿足計算PΩ,執(zhí)行步驟(5.2.8);
(5.2.8)采用修改后的Metropolis算法,從引入了輔助函數(shù)之后的偏置分布中抽取一個新的噪聲z*,(i)=(z1,…,zn),i增1;計算噪聲z*,(i)落入的所述控制變量的子區(qū)間號k,第k個所述子區(qū)間內(nèi)的噪聲數(shù)目增1;
(5.2.9)若i<N'2,重復(fù)所述步驟(5.2.8)~(5.2.9),直至不滿足所述判斷條件,執(zhí)行步驟(5.2.10);否則,執(zhí)行步驟(5.2.10);
(5.2.10)采用Berg遞歸公式計算第j+1次迭代中的(1≤k≤L'obj)
其中
進一步,
(5.2.11)若輸出否則,i=0,j增1,重復(fù)步驟(5.2.8)~(5.2.11),直到Ω區(qū)域內(nèi)的Pk|err,obj估計值收斂,輸出
如圖5所示,所述的步驟(5.2.3)中修改后的Metropolis算法具體為:
1)提取噪聲個數(shù)i,迭代次數(shù)j,噪聲z*,(i),表示噪聲維數(shù)的l=1;
2)令噪聲的第l維分量的下一個可能狀態(tài)其中,ε2為最大步長因子,調(diào)整ε2使得每一次迭代過程中被接受的狀態(tài)數(shù)目除以總的狀態(tài)數(shù)目接近0.234,Δz~N(0,σ2);
3)產(chǎn)生兩個服從U(0,1)均勻分布的隨機數(shù)α1與α2,判斷
4)若l等于碼長n,得到下一個可能的狀態(tài)執(zhí)行步驟5);否則,l增1,重復(fù)步驟2)~4),直至滿足條件l=n,執(zhí)行步驟5);
5)計算與
6)判斷E表示能夠?qū)е伦g碼器出現(xiàn)判決錯誤的噪聲的集合;
7)輸出z*,(i+1)。
所述的步驟(6)具體為:
在可信區(qū)間內(nèi)計算平均值
具體實施例
本發(fā)明以碼長為96,碼率為1/2的MacKay(96,48)LDPC碼為一個特例,介紹本發(fā)明的一種快速收斂的估計LDPC碼錯誤概率的方法。
仿真中,發(fā)送信號為全零碼字,調(diào)制方式為二進制相移鍵控調(diào)制,已調(diào)信號為{+1,…,+1}。LDPC碼的譯碼器采用置信度傳播譯碼算法,迭代次數(shù)為5次。步驟(1)中SNRref為4dB,SNRobj為大于4dB的實數(shù),Perr指的是誤幀率(FER),也可指誤比特率(BER)。
步驟(1.1)中SNRref=1dB,步驟(1.3)中ΔSNR=1dB。步驟(3.3)中的區(qū)間[V*,V**]=[0.5,0.55],δ=30。步驟(4.1.1)中α=0.1240。步驟(4.2.1)中,第一次迭代中應(yīng)產(chǎn)生的總的噪聲數(shù)目N1=5000,N1'=10000,圖3中的最大步長因子ε1=1.5。步驟(5.2.1)中,第一次迭代中應(yīng)產(chǎn)生的總噪聲數(shù)目N2=10000,N'2=100000,圖5中的最大步長因子ε2=0.5。
如圖6所示,圖(a)是本發(fā)明提供的仿真方法的每個子區(qū)間內(nèi)的噪聲數(shù)目在Ω區(qū)域內(nèi)趨于平坦的速度,圖(b)是DAIS法的在Ω區(qū)域內(nèi)趨于平坦的速度。由于仿真所需的樣本數(shù)與Ω區(qū)域內(nèi)Pk及Pk|err估計值的收斂速度成正比,收斂速度越快,仿真所需的樣本數(shù)越少;并且,直方圖趨于平坦的速度越快,估計值收斂于真實值的速度越快。從圖中可以看出,在Ω區(qū)域內(nèi),本發(fā)明設(shè)計的方法的直方圖趨于平坦的速度較快,因此估計值收斂于真實值的速度較快,所需的仿真樣本數(shù)較少。
仿真結(jié)果顯示,在低信噪比區(qū)域,本發(fā)明提供的方法得到的FER及BER估計值與MC法的一致;在高信噪比區(qū)域,該方法能獲得LDPC碼的低FER及BER估計值,如圖7所示。
表1給出了MC法、DAIS法及快速收斂的錯誤概率估計法這三種仿真方法所需譯碼的樣本數(shù)及仿真增益,仿真增益G1等于MC法所需譯碼的樣本數(shù)與其它兩種方法所需譯碼的樣本數(shù)之比,仿真增益G2等于DAIS法所需譯碼的樣本數(shù)與其它兩種方法所需譯碼的樣本數(shù)之比。其中,MC仿真所需的譯碼樣本數(shù)是在保證估計值精確度為10%的條件下,由N≥100/FER估計得到。仿真結(jié)果表明,本發(fā)明的快速收斂的估計LDPC碼的錯誤概率方法所需的仿真樣本數(shù)少。
表1MC法、DAIS法及快速收斂的錯誤概率估計法所需譯碼的樣本數(shù)及仿真增益