本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究_第1頁
本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究_第2頁
本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究_第3頁
本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究_第4頁
本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2010年本科畢業(yè)設(shè)計(jì):Turbo碼的編譯碼算法研究 2010屆畢業(yè)生 畢業(yè)論文題目:Turbo碼研究學(xué)號:指導(dǎo)教師:教師職稱:教授2010年6月2日

摘要在現(xiàn)代數(shù)字通信系統(tǒng)中,信道編碼常用來保護(hù)系統(tǒng)免遭噪聲和外界干擾,并用于降低系統(tǒng)的比特誤碼率,提高系統(tǒng)的可靠性。Turbo碼,由于性能接近香農(nóng)理論限,在低信噪比的應(yīng)用環(huán)境下比其他編碼好,因而在第三代移動(dòng)通信系統(tǒng)多種方案中,考慮將Turbo碼作為無線信道的編碼標(biāo)準(zhǔn)之一。本文討論了Turbo碼的編譯碼基本原理,對Turbo碼的幾種常用的編譯碼算法進(jìn)行了分析,并在給出編譯碼器模型的基礎(chǔ)上,用MATLAB語言實(shí)現(xiàn)了整個(gè)系統(tǒng)的計(jì)算機(jī)仿真并給出參考設(shè)計(jì)程序。關(guān)鍵詞:Turbo碼、軟判決Viterbi譯碼、交織器Title:TurbocodeencodinganddecodingalgorithmAbstractInmoderndigitalcommunicationsystems,channelcodingsystemusedtoprotectagainstnoiseandinterference,andusedtoreducethesystem'sbiterrorrateandimprovesystemreliability.Turbocode,AstheperformanceapproachestheShannontheoreticallimit,theapplicationofalowSNRenvironmentbetterthantheotherencodings,andthusthethirdgenerationmobilecommunicationsystemsinavarietyofprograms,considertheTurbocodeasthewirelesschannelofthecodingstandard.ThisarticlediscussesthebasicprinciplesofTurboCodesEncodingandDecodingofTurboCodesEncodingandDecodingofseveralcommonlyusedalgorithmsareanalyzedandpresentedcodecbasedonthemodel,withtheMATLABlanguagetoimplementthecomputersimulationofthesystemandtothereferencedesignprogram.Keywords:RecursivesystematicconvolutionalcodeSoft-decisionViterbidecodingInterleaver1引言 12Turbo碼概述 22.1Turbo碼簡介 22.2Turbo碼的優(yōu)缺點(diǎn) 22.3Turbo碼的發(fā)展 33Turbo碼的編碼原理 43.1編碼器組成 43.2編碼原理 63.3編碼算法 74Turbo碼譯碼原理 94.1 譯碼器組成 94.2譯碼原理 114.3MAPimumaposteriori算法 124.4 Log-MAP算法和-Log-MAP算法 144.5 SOVA算法 155Turbo碼的性能仿真 165.1仿真軟件介紹 165.2仿真系統(tǒng)構(gòu)建 185.3編碼子系統(tǒng) 185.4譯碼子系統(tǒng) 195.5仿真結(jié)果與分析 20結(jié)論 24致謝 25參考文獻(xiàn) 26附錄 271引言在數(shù)字通信系統(tǒng)中,根據(jù)不同的目的,編碼可分為信源編碼和信道編碼。信源編碼是為了提高數(shù)字信號的有效性以及為了使模擬信號數(shù)字化而采取的編碼。信道編碼是為了降低誤差率,提高數(shù)字通信的可靠性而采取的編碼。數(shù)字信號在傳輸過程中,加性噪聲、碼間串?dāng)_等都會生產(chǎn)誤碼。為了提高系統(tǒng)的抗干擾性能,可以加大發(fā)射功率,降低接受設(shè)備本身的噪聲,以及合理選擇調(diào)制、解調(diào)方法等。此外,還可以采用信道編碼技術(shù)。長期以來,編碼界一直致力于尋找編碼率接近香農(nóng)理論極限值、誤碼率小、解碼復(fù)雜度可以忍受的信道前向差錯(cuò)控制編碼方法,提出了可重復(fù)解碼的編碼技術(shù),包括乘積碼、級聯(lián)碼、多級碼及其推廣。在重復(fù)解碼、軟入軟出解碼、遞歸系統(tǒng)卷積碼和非均勻交織等概念的基礎(chǔ)上,1993年C.Berrou等在國際通信會議上最先提出了Turbo碼,它是并行級聯(lián)帶反饋系統(tǒng)卷積碼Parallelconcatenationofrecursivesystematicconvolutionalcodes的簡稱。仿真結(jié)果表明,在AWGN信道中,Turbo碼的糾錯(cuò)性能接近香農(nóng)極限。從此Turbo碼的研究成為了編碼界的一個(gè)研究熱點(diǎn),并開始在各種通信系統(tǒng)中實(shí)現(xiàn)應(yīng)用。MATLAB將高性能的數(shù)值計(jì)算和可視化集成在一起,并提供了大量的內(nèi)置函數(shù),從而被廣泛地應(yīng)用于科學(xué)計(jì)算、控制系統(tǒng)、信息處理等領(lǐng)域的分析、仿真和設(shè)計(jì)工作,而且利用MATLAB產(chǎn)品的開放式結(jié)構(gòu),可以非常容易地對MATLAB的功能進(jìn)行擴(kuò)充。MATLABSimulink是MATLAB提供的動(dòng)態(tài)仿真工具,它采用模塊組合的方法來創(chuàng)建動(dòng)態(tài)系統(tǒng)的計(jì)算機(jī)模型,其最突出的特點(diǎn)就是它的開放性,用戶可以通過S一函數(shù)定制自己的模塊和模塊庫,本文本文首先介紹了Turbo碼編譯碼的基本原理以及研究較深的幾種算法,在這個(gè)基礎(chǔ)上使用MATLAB建立仿真模型,最后給出仿真結(jié)果。2Turbo碼概述2.1Turbo碼簡介著名的Shannon信道編碼定理指出,每一信道都有一定的信道容量C,對任何RC的傳信率,都存在有速率為R的碼,用最大似然(ML)譯碼可達(dá)到任意小的錯(cuò)誤概率P。該定理包含兩方面的含義:一是Shannon用隨機(jī)編碼方式證明,當(dāng)RC時(shí),若n趨近于無窮,則使P趨近于0的好碼是存在的;二是為了達(dá)到理論值,應(yīng)該利用最大似然譯碼。Turbo碼由兩個(gè)二元卷積碼并行級聯(lián)而成。Turbo碼編譯碼器采用流水線結(jié)構(gòu),其編譯碼基本思想是,采用軟輸入/軟輸出(SISO)的迭代譯碼算法,編碼時(shí)將短碼構(gòu)成長碼,譯碼時(shí)再將長碼轉(zhuǎn)為短碼。譯碼算法的特點(diǎn)是,利用兩個(gè)子譯碼器之間信息的往復(fù)迭代遞歸調(diào)用,加強(qiáng)后驗(yàn)概率對數(shù)似然比,從而提高判決可靠性,Turbo碼由此而得名,這種算法也被稱為最大后驗(yàn)概率(MAP)算法。由于Turbo碼很好地應(yīng)用了Shannon信道編碼定理中的隨機(jī)性編譯碼條件,從而獲得幾乎接近Shannon理論極限的譯碼性能。2.2Turbo碼的優(yōu)缺點(diǎn)Turbo碼可以在譯碼復(fù)雜性與碼率之間達(dá)到較好的平衡,而且在中高噪聲的應(yīng)用環(huán)境中,性能比以往其它信道編碼好很多。通過數(shù)值模擬表明,在AWGN信道下,碼率為12的Turbo碼在達(dá)到誤比特率BER≤10時(shí),僅為約0.7dB這種情況下達(dá)到信道容量的理想值為0dB,遠(yuǎn)遠(yuǎn)超過了其他的編碼方式Turbo碼在某些對時(shí)延要求高的通信系統(tǒng)中的應(yīng)用受到限制;(3)理論分析困難,至今對于Turbo碼的譯碼復(fù)雜性、比特誤碼率,尚未形成完整的理論分析和估計(jì)。2.3Turbo碼的發(fā)展對Turbo碼的研究進(jìn)展大體有三個(gè)方面:1主要涉及到Turbo碼理論的研究。大多數(shù)研究集中在算法的改進(jìn),包括分量碼的選擇,交織器的設(shè)計(jì),譯碼算法的改進(jìn),終止技術(shù)等Turbo碼的各個(gè)環(huán)節(jié),取得了大量的成果,為Turbo碼的實(shí)現(xiàn)和在其它領(lǐng)域的應(yīng)用打下了堅(jiān)實(shí)的基礎(chǔ)。2隨著Turbo碼技術(shù)的成熟,最新研究大多集中在Turbo碼和其它技術(shù)結(jié)合的應(yīng)用上,并且取得了很大的進(jìn)展。如Turbo碼和其它糾錯(cuò)碼的級聯(lián),Turbo碼和調(diào)制技術(shù)的結(jié)合即TTCM技術(shù),Turbo碼均衡技術(shù),Turbo碼多用戶檢測技術(shù)等。3由于Turbo碼時(shí)延問題的限制,應(yīng)用最先集中在對時(shí)延不敏感的場合,如衛(wèi)星通信和一些非實(shí)時(shí)的場合。隨著硬件技術(shù)的發(fā)展,Turbo碼在實(shí)時(shí)領(lǐng)域的應(yīng)用成為可能,值得一提的是Turbo碼已經(jīng)成為3G方案中高速數(shù)據(jù)的糾錯(cuò)技術(shù)之一,可見其應(yīng)用的潛力是很大的。但Turbo碼在衰落信道中的應(yīng)用還有很多問題需要解決,是目前研究的熱點(diǎn)。Turbo碼理論的出現(xiàn)是信道編譯碼史上的一個(gè)里程碑。它可以相當(dāng)接近信道容量的極限,在高速效據(jù)傳遞中有著傳統(tǒng)碼無可比擬的優(yōu)勢,以其優(yōu)良的性能引起了廣泛的重視。目前Turbo碼技術(shù)已經(jīng)從理論研究和仿真實(shí)驗(yàn)開始走向應(yīng)用,其許多關(guān)鍵的技術(shù)已經(jīng)有了多種改進(jìn)的方案,使其性能更加提高,更有利于軟件和硬件的實(shí)現(xiàn)。Turbo碼和其它技術(shù)的結(jié)合以及在其它領(lǐng)域的應(yīng)用也是最近研究的熱點(diǎn),并取得了大量的成果。相信隨著軟件和硬件技術(shù)的發(fā)展,Turbo碼技術(shù)的時(shí)延和算法復(fù)雜性等問題會得到極大地改善,并逐步取代業(yè)已成熟的分組碼和卷積碼技術(shù),而且還會進(jìn)一步與其它的技術(shù)結(jié)合,廣泛應(yīng)用于數(shù)字通信的各個(gè)領(lǐng)域。3Turbo碼的編碼原理3.1編碼器組成(1)編碼器結(jié)構(gòu)Turbo碼的基本思想是利用短碼構(gòu)造等效長度意義上的長碼。Turbo一個(gè)典型的Turbo碼編碼器如圖所示。編碼是通過兩個(gè)相同的編碼器和一個(gè)交織器組成。第一個(gè)編碼器直接對信源信息序列進(jìn)行編碼,第二個(gè)編碼器則對經(jīng)過交織器后的信息序列進(jìn)行編碼,交織器對輸入的原信息序列進(jìn)行隨機(jī)交織后輸出。Uu1,u2......un經(jīng)過―個(gè)N位交織器,形成―個(gè)新序列UI長度與內(nèi)容沒變,但比特位置經(jīng)過重新排列。U與UI分別經(jīng)由兩個(gè)相同結(jié)構(gòu)的子編碼器(分量碼編碼器)編碼,生成序列X1,X2。X1,X2再與未編碼的序列經(jīng)過復(fù)用,即生成Turbo碼序列X。在實(shí)際應(yīng)用中,為了提高Turbo碼的碼率,經(jīng)常增加一個(gè)刪余過程,對校驗(yàn)序列X1,X2進(jìn)行刪余,周期的刪除一些校驗(yàn)位,形成新的校驗(yàn)序列,再與未編碼序列經(jīng)過復(fù)用調(diào)制后,生成Turbo碼序列X。(2)子編碼器子編碼器(componentencoder)也叫。一般一個(gè)Turbo碼編碼器由兩個(gè)可以多個(gè)子編碼器和通過交織器的作用并行級聯(lián)組成子編碼器的結(jié)構(gòu)可以不同但一般取相同結(jié)構(gòu),以簡化譯碼子碼可以是卷積碼或者是分組碼Turbo碼中級聯(lián)的兩個(gè)子編碼器必須是系統(tǒng)碼,所以一般選擇遞歸系統(tǒng)卷積碼(RSC)。(3)RSC碼RSC碼是與Turbo碼同時(shí)提出的一類新的遞歸型系統(tǒng)卷積碼,該碼在高碼率時(shí)比最好的NSC(非系統(tǒng)卷積碼)還要好。Turbo碼既然要求采用系統(tǒng)碼,理所當(dāng)然就選上了遞歸型系統(tǒng)卷積碼RSC。RSC與NSC的狀態(tài)轉(zhuǎn)移圖對比如下圖:圖3-2RSC與NSC的狀態(tài)轉(zhuǎn)移圖(4)交織器交織器Turbo碼中的主要作用是減少校驗(yàn)比特間的相關(guān)性進(jìn)而在迭代譯碼過程中降低誤比特。其基本的原則是通過增加交織器的長度可使譯碼性能得到提高交織器應(yīng)該使輸入序列盡能地隨機(jī)化從而避免編碼生成碼字的信息序列交織后編碼仍舊生成低重碼字導(dǎo)致Turbo碼的自由距離減少。隨機(jī)交織器反映的實(shí)際上是一種映射關(guān)系。其工作過程是:對于長為n的信息序列,首先標(biāo)記每個(gè)比特的位置,然后生成n個(gè)[0,1]之間的隨機(jī)數(shù),按產(chǎn)生的順序排列成序列X,每個(gè)隨機(jī)數(shù)都對應(yīng)于信息序列中的信息比特。然后把X中元素按一定的規(guī)則重新排列得到新的序列Y,并按Y中元素的順序讀出相應(yīng)的信息比特,這樣就完成了交織。比如隨機(jī)序列[0.76210.45650.01850.82140.4447],它對應(yīng)信息序列X為[]。將隨機(jī)序列按升序排列得到[0.01850.44470.45650.76210.8214],則現(xiàn)在對應(yīng)的信息序列Y為[]。這樣,就完成了交織。如果一個(gè)碼率為的卷積碼的生成矩陣為:式3-1則其對應(yīng)的遞歸系統(tǒng)卷積碼的生成矩陣為:式3-2如以生成矩陣為(也可以表示為g=[1101;1111])的遞歸系統(tǒng)卷積碼作為子碼,它對應(yīng)的Turbo碼結(jié)構(gòu)如圖圖3-3Turbo碼的編碼結(jié)構(gòu)圖輸入編碼器的信息序列為,它一方面直接輸入到進(jìn)行編碼,生成系統(tǒng)序列和校驗(yàn)序列,另一方面,U經(jīng)過交織器后,輸入到中進(jìn)行編碼,產(chǎn)生另一個(gè)校驗(yàn)序列,這三個(gè)序列經(jīng)復(fù)用單元復(fù)用后完成編碼,得到發(fā)送序列。復(fù)用單元的作用是調(diào)整編碼速率,并將并行數(shù)據(jù)變換為串行數(shù)據(jù)流。通常系統(tǒng)序列全部傳送,校驗(yàn)序列按照收縮矩陣收縮。圖示Turbo碼編碼器可以采用收縮矩陣將編碼速率調(diào)整到1/2,矩陣的每行對應(yīng)一個(gè)子編碼器,第一列和第二列分別對應(yīng)子編碼器輸出的第偶數(shù)個(gè)碼元和第奇數(shù)個(gè)碼元。1表示該碼元需要傳送,0表示不需傳送。如果稱對原始信息序列編碼為水平方向的編碼,稱對經(jīng)過交織器后的信息序列編碼為垂直方向的編碼。在每個(gè)方向上,個(gè)信息比特經(jīng)過編碼器輸出為 式3-3其中,或表示信息比特,表示與該信息比特對應(yīng)的校驗(yàn)比特,校驗(yàn)比特?cái)?shù)取決于系統(tǒng)卷積碼的生成多項(xiàng)式。顯然式3-4傳輸前經(jīng)過收縮,有一部分校驗(yàn)比特將不予傳送,在接收端未被傳送的比特位用零填充。從上面的介紹我們可以看到,Turbo碼編碼部分級聯(lián)結(jié)構(gòu)和交織器的共同作用,使Turbo編碼接近隨機(jī)編碼,從而保證了Turbo碼必定是一種好碼。g的理解。圖遞歸系統(tǒng)碼對照遞歸系統(tǒng)卷積碼的一般的編碼結(jié)構(gòu)圖。,其中[1,m+1](其中m是寄存器的數(shù)目)。是矩陣g的第一行,可以看成是對應(yīng)的圖中的反饋環(huán)支路;是矩陣g的第二行,可以看成對應(yīng)的是輸出的支路。和分別對應(yīng)兩點(diǎn)的信息。無論還是中的后m個(gè)信息位的每一位都分別對應(yīng)一個(gè)寄存器。它們可以看成是標(biāo)志著一種狀態(tài)。第一行中的后m位表示產(chǎn)生反饋信息所用到的寄存器,比如說第j+1位,它對應(yīng)于第j個(gè)寄存器,該位為1表示用到了該寄存器內(nèi)的信息,即該寄存器有反饋到輸出信息的那個(gè)加法器,為零則表示沒有反饋回去。同理,中的后m位表示產(chǎn)生信息所用到的寄存器。對于encoder1:d=input;L_infolengthd;L_totalL_info+m;goto3;Y(1,:)=X;Y2,:=Y(jié);對于encoder2:d=Y(jié)(1,:)(alpha);%alpha為隨機(jī)交織圖樣%(是L_total列行向量)L_total=length(d);L_info=L_total;goto3;Y3,:=Y(jié);Goto(4)。①state為一m列行向量。初始化為零②ifL_info,=;elseifL_infoL_total=[2:m+1]state;=;endif③[state];=[state];state[state1:m-1];k=k+1;ifkL_totalgoto②;令Y2Y-1(把0和1信號調(diào)制成-1和1信號)然后進(jìn)行并/串變換:如果沒有刪余,則對矩陣Y按列的順序取,取完第一列,取第二列,直到最后一列(第L_total列);如果有刪余,則對于Y的第一行系統(tǒng)碼,當(dāng)取第奇數(shù)個(gè)系統(tǒng)碼時(shí),取對應(yīng)列第二行的校驗(yàn)碼,當(dāng)取第偶數(shù)個(gè)系統(tǒng)碼時(shí),取對應(yīng)列第三行的校驗(yàn)碼。4Turbo碼譯碼原理譯碼算法的研究是Turbo碼研究的一個(gè)主要方面,因?yàn)樗鼪Q定整個(gè)系統(tǒng)能否充分發(fā)揮Turbo碼的固有性能。選擇算法的基本原則是在一定的復(fù)雜性和時(shí)延要求下保持一定的性能,并且利于硬件實(shí)現(xiàn)。選擇合適的譯碼算法,對于使Turbo碼能在實(shí)用系統(tǒng)中充分發(fā)揮其性能優(yōu)勢是非常重要的。Turbo碼譯碼器采用反饋結(jié)構(gòu),以迭代方式譯碼,而迭代(iterative)譯碼思想是Turbo碼的一大特色。Turbo編碼器的兩個(gè)子編碼器對應(yīng),譯碼器也采用兩個(gè)子譯碼器,通過交換稱為邊信息(外部信息)的輔助信息相互支持,從而提高譯碼性能。邊信息的交換在迭代的過程中實(shí)現(xiàn),前一次迭代產(chǎn)生的邊信息經(jīng)交換后將作為下一次迭代的先驗(yàn)信息。Turbo碼譯碼器結(jié)構(gòu)如圖所示的是Turbo碼譯碼器結(jié)構(gòu)。每個(gè)子譯碼器將從本身的譯碼過程中得到的外部信息ExtrinsicInformation提供給另一個(gè)子譯碼器,作為其譯碼的輔助信息,從而提高整體譯碼性能。在執(zhí)行軟輸入/軟輸出的迭代譯碼過程中,子譯碼器之間相互配合,從而達(dá)到一種全局譯碼的效果,充分挖掘了碼的固有糾錯(cuò)性能。Turbo碼的譯碼策略,在于使用簡單的譯碼單元的迭代來替代復(fù)雜的一次性譯碼,相對于長約束長度的卷積碼來說,Turbo碼每個(gè)譯碼單元的狀態(tài)數(shù)要少得多,因而譯碼復(fù)雜性減少,其缺點(diǎn)是迭代過程帶來的不可避免的時(shí)延,因?yàn)閺臅r(shí)間的角度看,它相當(dāng)于n級(n等于迭代次數(shù))具有相同結(jié)構(gòu)得譯碼單元相連為了產(chǎn)生和利用邊信息(外部信息),子譯碼單元必須具有軟輸入/軟輸出的能力。適合于這種譯碼思想的算法以Bahl的算法最具有代表性,應(yīng)用也最廣。這是一種對具有有限狀態(tài)馬爾可夫特性的碼及離散無記憶特性的信道提供逐符號或逐比特似然值的最優(yōu)算法。圖Turbo碼迭代譯碼形式1、似然函數(shù)設(shè)是元素為+1,-1的GF2即二元伽羅華域的元素,在模2加下,+1表示零元。隨機(jī)變量的對數(shù)似然函數(shù)定義為式4-1其中表示隨機(jī)變量取值為的概率。似然函數(shù)稱為隨機(jī)變量的軟值。的符號代表硬判決值,的絕對值表示該判決的可靠性。沒有特殊說明,對數(shù)取自然對數(shù)。在已知另一隨機(jī)變量的條件下,條件似然函數(shù)比定義為式4-22、軟信道值對一個(gè)軟值為的二進(jìn)制變量進(jìn)行編碼,可得到一個(gè)軟值為的碼元。對于一個(gè)系統(tǒng)碼,前個(gè)碼元和信息比特相等。經(jīng)過一個(gè)二進(jìn)制對稱信道或高斯/衰落信道,在接收端匹配濾波器輸出為的條件下,有:式4-3運(yùn)用前面定義,有式4-4其中稱為信道可靠性能。表示衰落因子,在高斯信道中,我們令。是信號能量,是高斯白噪聲的單邊帶功率密度譜。在通常情況下,如衰落信道,是時(shí)變的,而在高斯信道中是恒定不變的。以下部分我們假定信道是高斯信道。軟信道值中包含了關(guān)于信道的信息。編碼器的輸出碼字序列為:,在經(jīng)過離散無記憶高斯信道的傳輸后,碼字變?yōu)?其中,。設(shè)為時(shí)刻編碼器所處的狀態(tài),是時(shí)刻到時(shí)刻轉(zhuǎn)移時(shí)的輸入比特,時(shí)刻和時(shí)的狀態(tài)分別用m和m表示。譯碼的數(shù)據(jù)比特的后驗(yàn)概率可以從聯(lián)合概率得到,其中,由下式定義: (-5)這樣,譯碼的數(shù)據(jù)比特的后驗(yàn)概率則等于:(-6)由(),與解碼比特相聯(lián)系的對數(shù)似然比可寫成: (-7)最后,解碼器通過對和一個(gè)等于0的門限值比較后,作出以下判決:若 若(-8)為了計(jì)算概率,我們引入概率函數(shù),和:(-9)(-10)= (-11)這里,表示從格柵起始時(shí)刻到時(shí)刻收到的符號序列,表示從時(shí)刻到格柵終止收到的符號序列。其中中得q(??|??)取值為“0”或“1”,最后一項(xiàng)(??|??)為譯碼器的狀態(tài)轉(zhuǎn)移概率,由于編碼比特以等概率1/2取“0”和“1”,所以這一項(xiàng)就等于1/2。則聯(lián)合概率可用貝葉斯定理重寫為: (-12)這樣,我們得到(-13)考慮到如果狀態(tài)已知,時(shí)刻k后的事件不受觀察值和比特的影響,則概率等于: (-14)MAP算法從概率采用前、后向遞推的方式來計(jì)算和。最后我們可得: (-15)及 (-16)顯然在的遞推過程中,要知道格柵最后時(shí)刻所處的狀態(tài),我們通常假設(shè)格柵的起始和終止?fàn)顟B(tài)都為零。這樣和可初始化為: (-17) (-18)運(yùn)用(-7)式所定義的對數(shù)似然比公式及(-14)、(-15)和(-16),為: (-19)由于編碼器是系統(tǒng)碼(),表達(dá)式中的轉(zhuǎn)移概率是與狀態(tài)值和無關(guān)的。因此,將這個(gè)條件代入(-19)式的分子和分母,則有: (-20)根據(jù)條件(或,變量是均值為1或-1和方差為的高斯變量,因此對數(shù)似然比依然是等于: (-21)其中, (-22)是一個(gè)由編碼器引入的冗余信息函數(shù),一般情況下和的符號一樣,因此可以改進(jìn)每一個(gè)解碼器數(shù)據(jù)比特的對數(shù)似然比。這個(gè)數(shù)值代表了解碼器提供的外在信息,但它并不依賴于解碼器的輸入,這個(gè)性質(zhì)可以用來對兩個(gè)并行級連編碼器進(jìn)行解碼。MAP算法非常復(fù)雜,運(yùn)算量極大,運(yùn)算中不僅有大量的乘法和加法,還有在數(shù)字電路中較難實(shí)現(xiàn)的指數(shù)和對數(shù)運(yùn)算,這極大的影響了MAP算法的實(shí)用。Koch和Baier及Erfanian等人提出-Log-MAP算法,大大地簡化了MAP算法的復(fù)雜性,由于計(jì)算中做了一定地近似,這種算法不是最優(yōu)的。Robertson等人對-Log-MAP算法做了一定地修正,被稱作Log―MAP算法。本文中只對Log-MAP算法進(jìn)行了仿真。Log-MAP算法在MAP算法中將似然值運(yùn)算全部用對數(shù)似然值表示,通過一定的簡化,可將乘法運(yùn)算變成加法運(yùn)算,即(式4-23)在該式中?(*)是一個(gè)相關(guān)函數(shù)。-Log-MAP算法-Log-MAP對MAP所做的修改是直接在對數(shù)域里進(jìn)行計(jì)算省去了許多指數(shù)和對數(shù)運(yùn)算,大大簡化了運(yùn)算量。在―Log―MAP譯碼過程中主要忽略了(式4-23)式中的對數(shù)分量,令(式4-24)則有(式4-25)SOVA算法SOVASoftOutputViterbiAlgorithm是對原Viterbi算法做了一定的修改,使其適合于Turbo碼的迭代譯碼。所作的修改主要有兩個(gè)方面:1在柵格圖中選擇最大似然路徑時(shí)要把先驗(yàn)信息考慮進(jìn)去;2不僅要把每個(gè)比特UK是+l或一1譯碼出來,同時(shí)也要給出Uk譯碼的可靠度,以LLR形式給出LUk|Y,作為“Softoutput”,從中可以獲得一些關(guān)于UK的先驗(yàn)信息,為下次迭代所使用。這正是此算法被命名為SOVA的原因。SOVA算法在刪除低似然路徑是保留必要的信息,以給每個(gè)輸出比特提供一個(gè)可信度,其基本思想是利用最優(yōu)路徑和被刪路徑的度量差,差值越小意味著這次選取的可靠性越低。5Turbo碼的性能仿真在本文的設(shè)計(jì)中,主要通過基于MATLAB自帶的Simulink工作環(huán)境進(jìn)行仿真。5.1仿真軟件介紹計(jì)算機(jī)對科學(xué)技術(shù)的幾乎一切領(lǐng)域產(chǎn)成了極其深遠(yuǎn)的影響。熟練掌握并利用計(jì)算機(jī)進(jìn)行科學(xué)計(jì)算研究及工程應(yīng)用已是廣大科研設(shè)計(jì)人員所必備的基本技能之一。從事科學(xué)研究和工程應(yīng)用時(shí)候所遇到的最大的困擾大抵是我們在計(jì)算涉及矩陣運(yùn)算或畫圖時(shí),采用Fortran、C及C++等計(jì)算機(jī)語言進(jìn)行程序設(shè)計(jì)是一項(xiàng)十分麻煩的工作,不僅需要對所利用的有關(guān)算法有深刻的了解,還需要掌握所用語言的語法及編程技巧。為了準(zhǔn)確的把一個(gè)控制系統(tǒng)的復(fù)雜模型輸入計(jì)算機(jī),然后對之進(jìn)行進(jìn)一步的分析與仿真,1990年Mathworks公司為Matlab提供了新的控制系統(tǒng)模型圖形輸入與仿真工具Simulab,該工具很快在控制界得到了廣泛的使用。但因其名字與著名的軟件公司Simula相似,所以在1992年正式改名為Simulink,此軟件有兩個(gè)明顯的功能:仿真與連接,亦即利用鼠標(biāo)在模型窗口上畫出所需的控制系統(tǒng)模型,然后利用該軟件提供的功能對系統(tǒng)直接進(jìn)行仿真處理。很明顯,這種做法使得一個(gè)很復(fù)雜的系統(tǒng)的輸入相當(dāng)容易。Simulink的出現(xiàn),使得Matlab為控制系統(tǒng)的仿真及其在CAD等中的應(yīng)用打開了嶄新的局面。1、Matlab的特點(diǎn)Matlab作為一種數(shù)值計(jì)算和與圖形處理工具軟件,其特點(diǎn)是語法結(jié)構(gòu)簡明、數(shù)值計(jì)算高效、圖形處理完備、易學(xué)易用,它在矩陣代數(shù)數(shù)值計(jì)算、數(shù)字信號處理、震動(dòng)理論、神經(jīng)網(wǎng)絡(luò)控制、動(dòng)態(tài)仿真等領(lǐng)域都有廣泛的應(yīng)用。與C、C++、Fortran等高級語言相比,Matlab不但在數(shù)學(xué)語言的表達(dá)與解釋方面表現(xiàn)出人機(jī)交互的高度一致,而且具有優(yōu)秀高技術(shù)計(jì)算環(huán)境所不可缺少的如下特征:高質(zhì)量、高可靠的數(shù)值計(jì)算能力;基于向量、數(shù)組和矩陣的高維設(shè)計(jì)語言;高級圖形和可視化數(shù)據(jù)處理的能力;廣泛解決各學(xué)科各專業(yè)領(lǐng)域內(nèi)復(fù)雜問題的能力;擁有一個(gè)強(qiáng)大的非線性系統(tǒng)仿真工具箱――Silmulink;支持科學(xué)和工程計(jì)算標(biāo)準(zhǔn)的開放式、可交互結(jié)構(gòu);跨平臺兼容。2、Matlab工具箱和內(nèi)容目前Matlab已經(jīng)成為國際上最流行的軟件之一,它除了傳統(tǒng)的交互式編程外,還提供了豐富可靠的矩陣運(yùn)算。圖形繪制、數(shù)據(jù)處理、圖象處理、方便的Windows編程等便利工具。出現(xiàn)了各種以Matlab為基礎(chǔ)的使用工具箱,廣泛的應(yīng)用于自動(dòng)控制、圖象信號處理、生物醫(yī)學(xué)工程、語言處理、雷達(dá)工程、信號分析、震動(dòng)理論、時(shí)序分析與建模、化學(xué)統(tǒng)計(jì)學(xué)、優(yōu)化設(shè)計(jì)等領(lǐng)域,并表現(xiàn)出一般高級語言難以比擬的優(yōu)勢。較為常見的工具箱主要包括:控制系統(tǒng)工具箱(Contorlsystemstoolbox)系統(tǒng)識別工具箱(Systemsidentificationtoolbox)多變量頻率設(shè)計(jì)工具箱(Multivariablefreguencydesigntoolbox)魯棒控制工具箱(Robustcontroltoolbox)分析與綜合工具箱(analysisandsynthesistoolbox)神經(jīng)網(wǎng)絡(luò)工具箱(Neuralnetworktoolbox)最優(yōu)化工具箱(Optimizationtoolbox)信號處理工具箱(Signalprocessingtoolbox)模糊推理數(shù)據(jù)工具箱(Fuzzyinferencesystemtoolbox)小波分析工具箱(Wavelettoolbox)通信工具箱(Communicationstoolbox)3、Simulink簡介Simulink是實(shí)現(xiàn)動(dòng)態(tài)系統(tǒng)模型仿真的一個(gè)集成環(huán)境,她的存在使Matlab的功能得到進(jìn)一步的擴(kuò)展。這種擴(kuò)展的意義表現(xiàn)在:(1)實(shí)現(xiàn)可視化建模。在Windws環(huán)境下,用戶通過簡單的鼠標(biāo)操作就可以建立直觀的系統(tǒng)模型,并進(jìn)行仿真;(2)實(shí)現(xiàn)多工作環(huán)境內(nèi)文件互用和數(shù)據(jù)交換,如Sinulink與Matlab,Simulink與Fortran、C和C++,Simulink與實(shí)時(shí)硬件工作環(huán)境的信息交換都可以方便的實(shí)現(xiàn);(3)把理論研究和工程實(shí)現(xiàn)有利地結(jié)合在一起。Simulink為用戶提供了用方框圖進(jìn)行建模的圖形接口,采用這種結(jié)構(gòu)化模型就像紙和筆一樣容易,它與系統(tǒng)仿真軟件包用微分方程和差分方程建模相比具有更直觀、方便、靈活的優(yōu)點(diǎn)。由于Matlab與Simulink是集成在一起的,因此用戶可以在這兩種環(huán)境下對自己的模型進(jìn)行仿真。BernoulliBinaryGenerator來表示,產(chǎn)生序列中0和1出現(xiàn)的概率基本相等,該模塊以1秒為周期。信宿為一個(gè)輸出口,將得到的數(shù)據(jù)輸出到工作區(qū)內(nèi)。Turbo編碼器、Turbo譯碼器、信道與噪聲則是Simulink子系統(tǒng),復(fù)雜的算法由S函數(shù)調(diào)用M文件實(shí)現(xiàn)。信道子系統(tǒng)有各種不同的信道可供選取,可以方便的仿真Turbo碼在不同信道下的性能,本文中只選用了AWGN信道模型對Turbo碼的編譯碼算法進(jìn)行了仿真研究。Turbo碼譯碼器部分則采用不同的譯碼子程序,比較各種譯碼算法對Turbo碼性能的影響。交織子程序在Turbo編碼子系統(tǒng)中被調(diào)用,主要完成對信息比特序列進(jìn)行位置的隨機(jī)置換;抽取子程序在Turbo編碼子系統(tǒng)中被調(diào)用,實(shí)現(xiàn)數(shù)據(jù)的抽取和重復(fù)過程;Log-MAP譯碼子程序、MAP算法譯碼子程序、SOVA在該Turbo碼仿真系統(tǒng)中選擇的部分參數(shù)如下:交織器類型選擇:偽隨機(jī)交織器。N:交織器的大小,也等于Turbo碼的分組長度,即每個(gè)分組所包含的信息序列的長度。信道類型選擇:加性高斯白噪聲信道AWGN。譯碼算法選擇:Log-MAP,MAP和SOVA三種譯碼算法。5.3編碼子系統(tǒng)在本系統(tǒng)中,Turbo碼的編碼器由兩個(gè)分量碼編碼器通過交織器并行級聯(lián)而成,其碼率可以選擇1/2、1/3等。Turbo編碼器的輸入信號在進(jìn)入卷積編碼器之前首先通過零填充模塊ZeroPad,在輸入數(shù)據(jù)幀中添加6個(gè)0,使在輸入數(shù)據(jù)幀編碼結(jié)束之后,分量碼編碼器的寄存器回到全零狀態(tài)。分量碼編碼器采用的是兩個(gè)相同的帶反饋的卷積碼編碼器,Turbo編碼就是這兩個(gè)卷積碼編碼器的輸出信號經(jīng)過信號抽取和重復(fù)之后得到的輸出信號。卷積碼編碼器反饋多項(xiàng)式為dD1+D2+D3。在仿真當(dāng)中,選擇碼率為1/2,卷積碼的兩個(gè)生成多項(xiàng)式分別是n0D1+D+D3和n1D1+D+D2+D3,八進(jìn)制就分別為15、17,約束長度為4。首先用貝努利發(fā)生器BernoulliBinaryGenerator產(chǎn)生序列,從參數(shù)面板調(diào)節(jié)幀大小和采樣率。原始序列進(jìn)入第1卷積編碼器ConvolutionalEncoder,并經(jīng)過隨機(jī)交織器RandomInterleaver后進(jìn)入第2卷積編碼器ConvolutionalEncoderl。兩個(gè)刪余模塊同時(shí)接在第1卷積編碼器的后面。第一個(gè)刪余模塊puncture的輸出為第1卷積編碼輸出的奇序列,第二個(gè)刪余模塊puncture1的輸出為第1卷積編碼輸出的偶序列。第三個(gè)刪余模塊puncture2接在第2卷積編碼器的后面,其輸出第2卷積編碼輸出的偶序列。這3路序列經(jīng)過串并變換后合成一路序列,作為Turbo編碼輸出。圖5-1Turbo碼編碼仿真的Simulink模塊示意5.4譯碼子系統(tǒng)由于Turbo碼的編碼部分由兩個(gè)子編碼器組成,在其譯碼部分也就相應(yīng)有兩個(gè)子譯碼器。該模塊可以調(diào)用Log―MAP譯碼子程序、MAP算法譯碼子程序、SOVA算法子程序口3供譯碼模塊調(diào)用。這些算法通過仿真模塊中的S函數(shù)實(shí)現(xiàn),并且用參數(shù)誤碼率BER對三種算法的性能進(jìn)行了比較。圖5-2Turbo碼譯碼仿真的Simulink模塊示意5.5仿真結(jié)果與分析圖5-3Turbo碼系統(tǒng)仿真的Simulink模塊示意1.交織長度對Turbo碼的影響選擇不同的交織長度的比較圖如圖5-4所示。由圖可見,交織長度越大,Turbo碼的糾錯(cuò)性能也就越好,這是因?yàn)榻豢椘鳟a(chǎn)生的交織增益,使得Turbo碼的性能隨幀長呈指數(shù)增長。但是,隨著交織器的增大,幀長越長,迭代譯碼的復(fù)雜程度也隨之增加,編碼時(shí)延、傳輸時(shí)延、譯碼時(shí)延等越大,所以在實(shí)際應(yīng)用中,需要根據(jù)系統(tǒng)要求選定最佳交織長度。圖5-4不同交織長度對Turbo碼性能的影響2.不同譯碼算法對Turbo碼的影響圖5-5給出了在其它條件相同時(shí)采用MAP、LogMAP、SOVA譯碼算法的結(jié)果。從圖中可以看出,在三種算法中,Log-MAP算法的性能最好,但是,Log-MAP的實(shí)現(xiàn)也是三種算法中最復(fù)雜的,特別在實(shí)際應(yīng)用中要在硬件上實(shí)現(xiàn)是很難的,這才導(dǎo)致了SOVA這些簡化算法的產(chǎn)生。MAP算法的性能與Log-MAP算法的性能大致相當(dāng)。在這三種算法中,SOVA算法最簡單,同時(shí)其性能也最差。所以在實(shí)際應(yīng)用中,需要根據(jù)系統(tǒng)要求選擇合適的譯碼算法。在比較低的信噪比情況下,SOVA只是次優(yōu)的算法,如果要獲得比較好的糾錯(cuò)效果,最好是基于Log-MAP算法進(jìn)行修正。圖5-5不同譯碼算法的對比3.不同迭代次數(shù)對Turbo碼的性能的影響迭代譯碼結(jié)構(gòu)是Turbo碼具有良好譯碼性能的一個(gè)重要原因。在交織長度為640、采用Log―MAP譯碼算法的情況下,分別迭代1次、2次、3次進(jìn)行比較??梢钥闯?,迭代次數(shù)越多,誤碼率越低,譯碼性能優(yōu)越。同時(shí),進(jìn)一步可以發(fā)現(xiàn)迭代次數(shù)存在一個(gè)飽和值,一般5~10次即飽和,當(dāng)達(dá)到飽和時(shí),即使次數(shù)增加,譯碼的性能也不會明顯改進(jìn),反而是迭代次數(shù)的增加會造成不必要的計(jì)算負(fù)擔(dān),所以在實(shí)際系統(tǒng)中要考慮飽和點(diǎn)來設(shè)計(jì)迭代次數(shù)。圖5-6不同迭代次數(shù)對Turbo碼性能的影響結(jié)論利用MATLAB的強(qiáng)大運(yùn)算功能,基于MATLAB/Simulink進(jìn)行Turbo碼的編譯碼系統(tǒng)仿真,設(shè)計(jì)方便、快捷,極大的減輕了工作量。在設(shè)計(jì)過程中可以對信噪比特性,隨時(shí)更改參數(shù),以達(dá)到對各種算法優(yōu)缺點(diǎn)的理解。經(jīng)過近三個(gè)月的摸索和學(xué)習(xí),在老師的指導(dǎo)和同學(xué)的幫助下我完成了此研究。在研究的實(shí)現(xiàn)中我主要做了如下工作:Turbo碼編譯碼算法的理解;(2)設(shè)計(jì)仿真系統(tǒng)模型加以分析比較;(3)分析比較各種算法,特別是三種譯碼算法的性能比較。通過自行設(shè)計(jì)系統(tǒng)模型與仿真,加深了對Turbo碼的理解。從理論上進(jìn)行分析比較,再從仿真圖形中進(jìn)行對比,對自己在學(xué)習(xí)中的誤區(qū)改善具有良好的指導(dǎo)作用。致謝參考文獻(xiàn)O.TakeshiaandD.Costello.Newdeterministicinterleaverdesignsforturbocodes.IEEETransactionInformationTheory,2000,Vol.46:1988-2006.X.Liu,G.Zhang,Thedesignofanewinterleaverforturbocodes.JournalofSunYat-SenUniversityNaturalScienceEdition,2000,396:39-43.王會.王忠.Turbo碼性能分析與仿真.2002袁東風(fēng),張海霞.寬帶移動(dòng)通信中的先進(jìn)信道編碼技術(shù).北京郵電大學(xué)出版社,2004曹雪紅.張宗橙信息論與編碼.2004(美)傳特.通信系統(tǒng)仿真原理與無線應(yīng)用.機(jī)械工業(yè)出版社,2005周建興.MATLAB從入門到精通.人民郵電出版社,2008張德豐.MATLAB/Simulink建模與仿真.電子工業(yè)出版社,2009邵玉斌.MATLAB/SIMULINK通信系統(tǒng)建模與仿真實(shí)例分析.清華大學(xué)出版社,2008馮鑌,劉文予,朱光喜,馬展.AWGN信道下Turbo碼誤比特率模型.計(jì)算機(jī)科學(xué),2006,334:114-117.(美)麥克伊利斯著,李斗等譯.信息論與編碼理論(第二版).電子工業(yè)出版社,北京,2004年2月.王丙義編著.信息分類與編碼.國防工業(yè)出版社,北京,2003年7月.袁東風(fēng),張海霞等編著.?寬帶移動(dòng)通信中的先進(jìn)信道編碼技術(shù).北京郵電大學(xué)出版社,北京,2004年03月.?付永慶,劉雅琴,杜海明.Turbo碼譯碼的收斂性與停止迭代判據(jù).計(jì)算機(jī)工程,2004,3019:164-165.傅祖蕓,趙建中編著.信息論與編碼.電子工業(yè)出版社,北京,2006年04月附錄functionen_outputencodermx,g,alpha,puncture%usesinterleavermap'alpha'%ifpuncture1,unpunctured,producesarate1/3outputoffixedlength%ifpuncture0,punctured,producesarate1/2output%multiplexerchoosesoddcheckbitsfromRSC1%andevencheckbitsfromRSC2%determinetheconstraintlengthK,memorym%andnumberofinformationbitsplustailbits.[n,K]sizeg;mK-1;L_infolengthx;L_totalL_info+m;%generatethecodewordcorrespondingtothe1stRSCcoder%end1,perfectlyterminated;inputx;output1rsc_encodeg,input,1;%makeamatrixwithfirstrowcorresponingtoinfosequence%secondrowcorresponsingtoRSC#1'scheckbits.%thirdrowcorresponsingtoRSC#2'scheckbits.y1,:output11:2:2*L_total;y2,:output12:2:2*L_total;%interleaveinputtosecondencoderfori1:L_totalinput11,iy1,alphai;endoutput2rsc_encodeg,input11,1:L_total,-1;y3,:output22:2:2*L_total;%paralelltoserialmultiplextogetoutputvector%puncture0:rateincreasefrom1/3to1/2;%puncture1;unpunctured,rate1/3;ifpuncture0%unpuncturedfori1:L_totalforj1:3en_output1,3*i-1+jyj,i;endendelse%puncturedintorate1/2fori1:L_totalen_output1,n*i-1+1y1,i;ifremi,2%oddcheckbitsfromRSC1en_output1,n*iy2,i;else%evencheckbitsfromRSC2en_output1,n*iy3,i;endendend%antipodalmodulation:+1/-1en_output2*en_output-onessizeen_output;functionyrsc_encodeg,x,terminated%encodesablockofdatax0/1witharecursivesystematic%convolutionalcodewithgeneratorvectorsing,and%returnstheoutputiny0/1.%ifterminated0,thetrellisisperfectlyterminated%ifterminated0,itisleftunterminated;%determinetheconstraintlengthK,memorym,andrate1/n%andnumberofinformationbits.[n,K]sizeg;mK-1;ifterminated0L_infolengthx;L_totalL_info+m;elseL_totallengthx;L_infoL_total-m;end%initializethestatevectorstatezeros1,m;%generatethecodewordfori1:L_totalifterminated0|terminated0&iL_infod_kx1,i;elseifterminated0&iL_info%terminatethetrellisd_kremg1,2:K*state',2;enda_kremg1,:*[d_kstate]',2;[output_bits,state]encode_bitg,a_k,state;%sincesystematic,firstoutputisinputbitoutput_bits1,1d_k;yn*i-1+1:n*ioutput_bits;endfunction[output,state]encode_bitg,input,state%Thisfunctiontakesasaninputasinglebittobeencoded,%aswellasthecoeficientsofthegeneratorpolynomialsand%thecurrentstatevector.%Itreturnsasoutputnencodeddatabits,where1/nisthe%coderate.%therateis1/n%kistheconstraintlength%mistheamountofmemory[n,k]sizeg;mk-1;%determinethenextoutputbitfori1:noutputigi,1*input;forj2:koutputixoroutputi,gi,j*statej-1;end;endstate[input,state1:m-1];functionL_alllogmaporec_s,g,L_a,ind_dec%Log_MAPalgorithmusingstraightforwardmethodtocomputebranchmetrics%noapproximationisused.%Canbesimplifiedto-Log-MAPbyusingapproximationlne^x+e^yx,y.%Input:rec_s:scaledreceivedbits.%rec_s0.5*L_c*yk2*a*rate*Eb/N0*yk%g:codegeneratorforthecomponentRSCcode,inbinarymatrixform.%L_a:aprioriinfo.forthecurrentdecoder,%scrambledversionofextrinsicInftyo.ofthepreviousdecoder.%ind_dec:indexofdecoder.Either1or2.%Encoder1isassumedtobeterminated,whileencoder2isopen.%%Output:L_all:log-likelihoodratioofthesymbols.Completeinformation.%Totalnumberofbits:Inftyo.+tailL_totallengthrec_s/2;[n,K]sizeg;mK-1;nstates2^m;%numberofstatesinthetrellis%Setupthetrellis[next_out,next_state,last_out,last_state]trellisg;Infty1e10;%InitializationofAlphaAlpha1,10;Alpha1,2:nstates-Infty*ones1,nstates-1;%InitializationofBetaifind_dec1BetaL_total,10;BetaL_total,2:nstates-Infty*ones1,nstates-1;elseifind_dec2BetaL_total,1:nstateszeros1,nstates;elsefprintf'ind_decislimitedto1and2!\n';end%Traceforward,computeAlphafork2:L_total+1forstate21:nstatesgamma-Infty*ones1,nstates;gammalast_statestate2,1-rec_s2*k-3+rec_s2*k-2*last_outstate2,2....-log1+expL_ak-1;gammalast_statestate2,2rec_s2*k-3+rec_s2*k-2*last_outstate2,4....+L_ak-1-log1+expL_ak-1;ifsumexpgamma+Alphak-1,:1e-300Alphak,state2-Infty;elseAlphak,state2logsumexpgamma+Alphak-1,:;endendtempkAlphak,:;Alphak,:Alphak,:-tempk;end%Tracebackward,computeBetaforkL_total-1:-1:1forstate11:nstatesgamma-Infty*ones1,nstates;gammanext_statestate1,1-rec_s2*k+1+rec_s2*k+2*next_outstate1,2....-log1+expL_ak+1;gammanext_statestate1,2rec_s2*k+1+rec_s2*k+2*next_outstate1,4....+L_ak+1-log1+expL_ak+1;ifsumexpgamma+Betak+1,:1e-300Betak,state1-Infty;elseBetak,state1logsumexpgamma+Betak+1,:;endendBetak,:Betak,:-tempk+1;end%Computethesoftoutput,log-likelihoodratioofsymbolsintheframefork1:L_totalforstate21:nstatesgamma0-rec_s2*k-1+rec_s2*k*last_outstate2,2....-log1+expL_ak;gamma1rec_s2*k-1+rec_s2*k*last_outstate2,4...+L_ak-log1+expL_ak;temp0state2expgamma0+Alphak,last_statestate2,1+Betak,state2;temp1state2expgamma1+Alphak,last_statestate2,2+Betak,state2;endL_allklogsumtemp1-logsumtemp0;endfunctionL_allsovarec_s,g,L_a,ind_dec%ThisfunctionimplememtsSoftOutputViterbiAlgorithmintracebackmode%Input:%rec_s:scaledreceivedbits.rec_sk0.5*L_ck*yk%L_c4*a*Es/No,reliabilityvalueofthechannel%y:receivedbits%g:encodergeneratormatrixinbinaryform,g1,:forfeedback,g2,:forfeedforward%L_a:aprioriinformationabouttheinfo.bits.Extrinsicinfo.fromtheprevious%componentdecoder%ind_dec:indexofthecomponentdecoder.%1:componentdecoder1;Thetrellisisterminatedtoallzerostate%2:componentdecoder2;Thetrellisisnotperfectlyterminated.%Output:%L_all:logPx1|y/Px-1|y%%Framesize,info.+tailbitsL_totallengthL_a;[n,K]sizeg;mK-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論