卷積碼試驗報告_第1頁
卷積碼試驗報告_第2頁
卷積碼試驗報告_第3頁
卷積碼試驗報告_第4頁
卷積碼試驗報告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,word格式支持編輯,如有幫助歡迎下載支持。卷積碼實驗報告篇一:卷積碼實驗報告實驗五信道編解碼()本章目標掌握數(shù)字頻帶傳輸系統(tǒng)調制解調的仿真過程掌握數(shù)字 頻帶傳輸系統(tǒng)誤碼率仿真分析方法5.1實驗目的1. 使用MATLAB進行卷積碼編/譯碼器的仿真。2.熟 練掌握MATLAB軟件、語句。3. 了解卷積碼編/譯碼器的原 理、知識。5.2實驗要求1. 編寫源程序、準備測試數(shù)據(jù)。2. 在MATLAB環(huán)境下完成程序的編輯、編譯、運行,獲 得程序結果。如果結果有誤,應找岀原因,并設法更正之。5.3實驗原理(-)卷積碼編碼器1.連接表示卷積碼由3個整數(shù)n, k, N描述。

2、k/n也表示編碼效率(每編碼比特所含的信N稱為約束長度,息量);但n與線性分組碼中的含義不 同,不再表示分組或碼子長度;表示在編碼移位寄存器中k元組的級數(shù)。卷積碼不同于 分組碼的一個重要特征就是編碼器的記憶性,即卷積碼編碼 過程中產(chǎn)生的n元組,不僅是當前輸入k元組的函數(shù),而且 還是前面N?1個輸入k元組的函數(shù)。實際情況下,n和k經(jīng)lword格式支持編輯,如有幫助歡迎下載支持。文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,word格式支持編輯,如有幫助歡迎下載支持。常取較小的值,而通過N的變化來控制編碼的能力和復雜性。 下面以圖1中的卷積碼編碼器為例介紹卷積碼編碼器。 該圖表示一個約束長度K?3的(2,

3、1)卷積譯碼器,模2加法器的數(shù)目為n?2, 因此,編碼效率k/n?l/2o在每個輸入比特時間上,1位信息比特移入寄存器最左 端的一級,同時將寄存器中原有比特均右移一級,接著便交 替采樣兩個模2加法器,得到的碼元就是與該輸入比特相對 應的分支字。對每一個輸入信號比特都重復上述采樣過程。圖1卷積碼編碼器(編碼效率1/2, K?3)用于描述反饋移位寄存器實現(xiàn)循環(huán)碼時所使用的生成 多項式也可用戶描述卷積碼編碼器的連接。應用n個生成多 項式描述編碼的移位寄存器與模2加法器的連接方式,n個生成多項式分別對應n個模2加法器,每個生成多 項式不超過K?1階。仍以圖1中的編碼器為例,用生成多項式gl(X)代表上

4、方連接, g2(X)代表下方連接,則有:gl(X)?l?X?X2g2 (X)?1?X2多項式中的最低階項對應于寄存器的輸入級。輸出序 列根據(jù)如下方式求得:U (X) ?m (X) gl (X)與 m (X) g2 (X)交織其屮m表不輸入的信息矢量。2.狀態(tài)圖卷積編碼器屬于有限狀態(tài)機的器件?!坝邢蕖北砻鳡顟B(tài) 機制只有有限個不同的狀態(tài)。有限狀態(tài)機的狀態(tài)可以用設備 的當前輸入和最少的信息量,來預測設備的輸出。狀態(tài)提供 了有關過去序列過程及一組將來可能輸出序列的限制,下一 狀態(tài)總是受到前一狀態(tài)的限制。將編碼器在時刻ti的狀態(tài) 定義為 Xi?mi?l,mi?2,mi?K?lo01圖2狀態(tài)轉移圖如圖2所

5、示,方框內(nèi)的狀態(tài)表示寄存器最右端N?1級的 內(nèi)容,狀態(tài)間的路徑表示由此狀態(tài)轉移時的輸出分支字。對 應于兩種可能的輸入bit,從每個狀態(tài)岀發(fā)只有兩種轉移。3. 編碼器網(wǎng)格圖a 00b 10c 01d 11輸入比特0輸入比特1雖然狀態(tài)圖完全地描述了編碼器的特性,但由于沒有表 示時間過程,所以采用狀態(tài)圖跟蹤編碼器的狀態(tài)轉移很不方 便。樹狀圖在狀態(tài)圖的基礎上增加了時間尺度。每個相繼輸 入信息比特的編碼過程可表述為從左向右經(jīng)過樹狀圖,每條 數(shù)值代表一個輸出分支字。樹狀圖上增加的時間尺度是我們 可以動態(tài)地描述輸入序列的編碼過程。但由于樹狀圖的規(guī)模 增長很快,因而只適于序列中分支子數(shù)目較小的情況。我們采用移

6、位寄存器的4種可能狀態(tài)來標注樹圖的各個 節(jié)點,a?00, b?01, c?10, d?llo樹結構的第一次分支在時刻tl, 產(chǎn)生一對節(jié)點,記為a, b;在后繼的各個分支處,節(jié)點數(shù)翻倍。第二次分支在時刻 t2,生成4個節(jié)點,記為a,b,c,d;第三次分支后共有8個 節(jié)點。網(wǎng)格圖利用了結構上的重復性,從而能夠更加方便地 描述編碼器。(二)維特比譯碼算法維特比譯碼算法由維特比在1967年提出。維特比算法 的實質是最大似然譯碼,但它利用了編碼網(wǎng)格圖的特殊結構, 從而降低了計算的復雜性。該算法包括計算網(wǎng)格圖上在時刻 ti到達各個狀態(tài)的路徑和接受序列之間的相似度,或者說距 離。維特比算法考慮的是,去除不可

7、能成為最大似然選擇對 象的網(wǎng)格圖上的路徑,即如果有兩條路徑到達同一狀態(tài),則 具有最佳量度的路徑被選中,成為幸存路徑。對所有狀態(tài)都 將進行這樣的選路操作,譯碼器不斷在網(wǎng)格圖上深入,通過 去除可能性最小的路徑實現(xiàn)判決。網(wǎng)格圖中每個時刻ti上有2K?1條路徑到達。維特比譯碼包括計算到達每個狀態(tài)的兩條 路徑的路徑量度,并舍棄其中一條路徑。在時刻ti,算法對 2K?1并重復上述過程。在一個給定的時刻,各狀態(tài)的幸存路 徑量度就是該狀態(tài)在該時刻的狀態(tài)量度。圖3編碼器網(wǎng)格圖個狀態(tài),這里的K是約束長度,每種狀態(tài)都可經(jīng)兩 個狀態(tài)(節(jié)點)都進行上述計算,然后進入時刻ti?l, 輸入數(shù)據(jù)序列D1:發(fā)送序列U:接受序列

8、Z: 1 111 0 1 01 01a 00b 10c 01d 11輸入比特0輸入比特1圖4譯碼器網(wǎng)格圖5.4實驗內(nèi)容在MATLAB上設計一個(2, 1, 3)卷積編碼器和對應的采用維特比譯碼算法的譯碼器。編碼器的生成多項式為: gl(X)?l?X?X2g2(X)?1?X2將編碼器的輸岀經(jīng)過一個高斯白噪聲信道的結果作 為譯碼器的輸入,觀察比較譯碼器輸出和編碼器輸入,了解 卷積碼的容錯性,并計算譯碼結果的誤比特率。基本流程如 錯誤!未找到引用源。所示。實驗報告要求附加程序代碼, 并對代碼中每個函數(shù)模塊的實驗方式和功能進行簡要的說 明。輸出編碼結果卷積碼編碼模塊:卷積碼編碼子程序:function

9、 out_put二conv_enc(msg) gl=l 1 1: g2=l 0 1; ml=conv(msg,gl); m2=conv(msg, g2); Ll=length(ml); for i=l:Llout_put(2*i-l)=rem(ml(i), 2);out_put(2*i)二:rem (m2 (i), 2) ; end end該模塊將對輸入信息碼子編碼。維特比算法解碼器的實現(xiàn)函數(shù):function decoder_output二viterbi_ha:rd(y, L) global G;G=l 1 1; 1 0 1; n=size(G, 1): K=size (G, 2); num

10、ber_of_states二2八(K-l);%生成各分支的輸岀for j=0:number_of_states-l for t=0:1next_state, memory_contents二next_state_fun(j, t, K); input(j+1, next_state+1)二t;branch_output二rem(memory_contents*G,, 2);nextstate(j +1, t+l)=next_state;output(j+1, t+l)=bin2deci(branch_output); end end %metric_of_states=zeros (1, nu

11、mber_of_states) ; % 各 狀態(tài)的度量metricmetric_of_states_c二zeros (number_of_states, 2) ;% 各狀態(tài)兩個輸入的度量length_seq二length(y)/n;%符號個數(shù)decoder_output=zeros (1, length_seq-K+l) ; %解碼輸 出channel_output_matrix=reshape(y, n, length_seq);%將解調輸出的比特按符號排列survivor_state二zeros(number_of_states, length_seq+l);%留存 路 徑input_of

12、_state二zeros(number_of_states, length_seq+l, 2);%匯聚到各狀態(tài)的分支對應的輸入state_sequence=zeros(1, length_seq+l):count二zeros (1, number_of_states);for i=l:length_seq-K+lforj=0:number_of_statesl for t=0:1binary_output二deci2bin(output(j+1, t+1), n);篇二:卷積碼編譯碼實驗報告廈門理工學院實驗報告書課程名稱:信息論與編碼實驗實驗名稱: 卷積碼編譯碼12中輸入移位寄存器最多只有m?

13、k個有效的寄存器單元, 而輸出移位寄存器僅起一個并串轉換作用。因此稱參量m為 卷積嗎的記憶長度(段)2、維比特譯碼原理它的基本思想是把接收到的矢量,和網(wǎng)格圖上諸種可能 的路徑比較,刪去距離大的路徑,保留距離小的路徑,以距 離最小路徑作為發(fā)碼的估值五、實驗內(nèi)容在MATLAB環(huán)境下卷積碼編/解碼器的實現(xiàn)。1、主函數(shù)main, mclear;clc;msg = randint (1, 20, 0, 1)word = encode_conv213(msg)word(l)二'word(l);%信道中存在污染,人為的模擬傳 輸過wotd(10)二'word(lO); %程中的出錯碼字wor

14、d (15)二'word (15);wordl=wordmsg_l = decode_conv213(wordl)msg-msg_l2、狀態(tài)積 state_machine. mfunctionoutput, nextState=state_machine(input, current_state)output 二mod (current_state (1) +current_state (3), 2);output(2)=mod(input+current_state(2)+current_state(1), 2);nextState(l) = current_state(2);nex

15、tState(2) = current_state(3);nextState (3) = input;3、漢明距離 hamming_distance, mfunction distance = hamming_distance(a, b)temp = a+b;temp = mod(temp, 2);distance = sum(temp);4、213 編碼程序 encode_conv213 mfunction word = encode_conv213(msg)word = zeros (1, length(msg)*2);current 二000;for i = 1:length(msg)o

16、ut,next二 state_machine(msg(i), current);3current = next:word(2*i-l)二 out (1);word(2*i)= out (2);End5、213 維比特譯碼 decode_conv213. mfunction msg = decode_conv213(word)chip二10;%初始狀態(tài)選十個信息for i 二 1:2八chipM(i, :)= de2bi(i-l,chip); %把所有可能性按二進制輸 出W(i, :)= encode_conv213(M(i,:);%得到相應的二進制編譯后的碼字D(i) = hamming_di

17、stance(W(i, :), word(1:chip*2);%與岀錯碼字對比得到漢明距endval, index = sort(D):%val中存漢明距從小到大排列,index中存對應val數(shù) 據(jù)所在位置ret_msg = zeros (1, length (word)/2) ;%開辟譯出碼字的存放空間for i = 1:6%1024種選擇6種最小距離,并輸岀在ret_msg中,最 小漢明距存于ret_disret_msg(i, 1 :chip)= M(index(i),:);:ret_dis (i) = D(index (i);enditer = (length (word) -chip*

18、2) /2; %剩余要譯出的 碼字個數(shù)for i=l: iter %迭代過程llword格式支持編輯,如有幫助歡迎下載支持。文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,word格式支持編輯,如有幫助歡迎下載支持。for j=l:6msg_templ= ret_msg(j, l:chip+il) 0 ; %下一狀態(tài) 出“0”msg_temp2= ret_msg(j, l:chip+i-l) 1 ; %下一狀態(tài) 出Tword_tempi = encode_conv213(msg_templ); %下一狀態(tài)為“0”時的編碼word_temp2 = encode_conv213(msg_temp2);%下一狀

19、態(tài)為“1”時的編碼dis_tempi二 hamming_distance(word_templ, word(l:chip*2+2*i);dis_temp2二 hamming_distance (word_temp2, word (1: chip*2+2*i) ; %算 兩種漢明距 if (dis_templ ret_msg(j, l:chip+i)= msg_templ;ret_dis (j)= dis_templ;elseret_msg(j, l:chip+i) = msg_temp2;ret_dis(j)= dis_temp2;%選擇較小漢明距的狀態(tài)儲存并輸出在ret_msg中,最 小漢明

20、距存于ret_disendend45篇三:卷積碼實驗報告現(xiàn)代編碼理論基于MATLAB的卷積碼編碼及譯碼仿真姓名:閆嘉川學號:1433170所在院系:電子與信息工程學院實驗名稱:基于MAATLAB的卷積碼編碼及譯碼仿真實驗目的:卷積碼是一種性能優(yōu)越的信道編碼。它的 編碼器和譯碼器都比較容易實現(xiàn),同時它具有較強的糾錯能 力。隨著糾錯編碼理論研究的不斷深入,卷積碼的實際應用 越來越廣泛。本實驗簡明地介紹了卷積碼的編碼原理和 Viterbi譯碼原理。并在SIMULINK模塊設計中,完成了對卷 積碼的編碼和譯碼以及誤比特統(tǒng)計整個過程的模塊仿真。最 后,通過在仿真過程中分別改變卷積碼的重要參數(shù)來加深理 解

21、卷積碼的這些參數(shù)對卷積碼的誤碼性能的影響。經(jīng)過仿真 和實測,并對測試結果作了分析。實驗原理:1、卷積碼編碼原理卷積碼是一種性能優(yōu)越的信道編碼,它的編碼器和解碼 器都比較易于實現(xiàn),同時還具有較強的糾錯能力,這使得它 的使用越來越廣泛。卷積碼一般表示為(n, k, K)的形式,即 將k個信息比特編碼為n個比特的碼組,K為編碼約束長 度,說明編碼過程中相互約束的碼段個數(shù)。卷積碼編碼后的 n各碼元不經(jīng)與當前組的k個信息比特有關,還與前K-1 個輸入組的信息比特有關。編碼過程中相互關聯(lián)的碼元有 K*n個。R=k/n是編碼效率。編碼效率和約束長度是衡量卷 積碼的兩個重要參數(shù)。典型的卷積碼一般選n,k較小,

22、K值 可取較大O10),但以獲得簡單而高性能的卷積碼。卷積碼的編碼描述方式有很多種:沖激響應描述法、生 成矩陣描述法、多項式乘積描述法、狀態(tài)圖描述,樹圖描述, 網(wǎng)格圖描述等。2、卷積碼Viterbi譯碼原理卷積碼概率譯碼的基本思路是:以接收碼流為基礎,逐 個計算它與其他所有可能岀現(xiàn)的、連續(xù)的網(wǎng)格圖路徑的距離, 選出其中可能性最大的一條作為譯碼估值輸出。概率最大在 大多數(shù)場合可解釋為距離最小,這種最小距離譯碼體現(xiàn)的正 是最大似然的準則。卷積碼的最大似然譯碼與分組碼的最大 似然譯碼在原理上是一樣的,但實現(xiàn)方法上略有不同。主要 區(qū)別在于:分組碼是孤立地求解單個碼組的相似度,而卷積 碼是求碼字序列之間

23、的相似度。基于網(wǎng)格圖搜索的譯碼是實 現(xiàn)最大似然判決的重要方法和途徑。用格圖描述時,由于路 徑的匯聚消除了樹狀圖中的多余度,譯碼過程中只需考慮整 個路徑集合中那些使似然函數(shù)最大的路徑。如果在某一點上 發(fā)現(xiàn)某條路徑已不可能獲得最大對數(shù)似然函數(shù),就放棄這條 路徑,然后在剩下的“幸存”路徑中重新選擇路徑。這樣一 直進行到最后第L級(L為發(fā)送序列的長度)。由于這種方 法較早地丟棄了那些不可能的路徑,從而減輕了譯碼的工作 量,Viterbi譯碼正是基于這種想法。對于(n, k, K )卷積 碼,其網(wǎng)格圖中共2kL種狀態(tài)。由網(wǎng)格圖的前K-1條連續(xù) 支路構成的路徑互不相交,即最初2k_l條路徑各不相同, 當接

24、收到第K條支路時,每條路徑都有2條支路延伸到第 K級上,而第K級上的每兩條支路又都匯聚在一個節(jié)點上。 在Viterbi譯碼算法中,把匯聚在每個節(jié)點上的兩條路徑的 對數(shù)似然函數(shù)累加值進行比較,然后把具有較大對數(shù)似然函 數(shù)累加值的路徑保存下來,而丟棄另一條路徑,經(jīng)挑選后第 K級只留下2K條幸存路徑。選出的路徑同它們的對數(shù)似然 函數(shù)的累加值將一起被存儲起來。由于每個節(jié)點引岀兩條支 路,因此以后各級中路徑的延仲都增大一倍,但比較它們的 似然函數(shù)累加值后,丟棄一半,結果留存下來的路徑總數(shù)保 持常數(shù)。由此可見,上述譯碼過程中的基本操作是,“加-比 -選”,即每級求出對數(shù)似然函數(shù)的累加值,然后兩兩比較后作

25、出選擇。有時會岀現(xiàn)兩條路徑的對數(shù)似然函數(shù)累加值相等的 情形,在這種情況下可以任意選擇其中一條作為“幸存”路 徑。卷積碼的編碼器從全零狀態(tài)出發(fā),最后又回到全零狀態(tài) 時所輸出的碼序列,稱為結尾卷積碼。因此,當序列發(fā)送完 畢后,要在網(wǎng)格圖的終結處加上(K-1)個己知的信息作為 結束信息。在結束信息到來時,由于每一狀態(tài)中只有與已知 發(fā)送信息相符的那條支路被延伸,因而在每級比較后,幸存 路徑減少一半。因此,在接收到(K-1)個己知信息后,在 整個網(wǎng)格圖中就只有唯一的一條幸存路徑保留下來,這就是 譯碼所得的路徑。也就是說,在己知接收到的序列的情況下, 這條譯碼路徑和發(fā)送序列是最相似的。3、MATLAB 仿

26、真在本次實驗中,主要是利用SIMULINK仿真模塊對卷積 碼的編碼及viterbi譯碼的全過程進行了設計,SIMULINK仿 真框圖如下:圖1卷積碼的SIMULINK仿真框圖基本設計思路是:先由Bernoulli Binary Generator (貝努利二進制序列產(chǎn)生器)產(chǎn)生一個0, 1等概序列,經(jīng) 過Convolutional Encoder (卷積編碼器)對輸入的二進制 序列進行卷積編碼,并用BPSK調制方式調制信號。加入信 道噪聲(高斯白噪聲)后再經(jīng)過BPSK解調制后送入Viterbi Decoder (Viterbi譯碼器)進行硬判決譯碼。最后經(jīng)過Eiror Rate Calcula

27、tion (誤碼統(tǒng)計)后由Display (顯示)輸出。 然后通過Selector (數(shù)據(jù)選通器)將結果輸出到To workspace (工作區(qū)間)。該結果將由m文件中的程序調用以 繪制不同信噪比及其他參數(shù)下系統(tǒng)誤碼率曲線。實驗結果:1、不同的約束長度對卷積碼誤碼率的影響對于碼率一定的卷積碼,當約束長度N發(fā)生變化時,系 統(tǒng)的誤碼性能也會隨之發(fā)生變化,本實驗中以碼率R二1/2 的(2, 1, 3)和(2, 1,7)卷積碼為例展開分析。仿真所用所用 程序如下:x=0:5;for i=l:length (x)SNR二x(i);sim(,juanjima,);y(i)=mean(BitErrorRate);endsemi logy (x, y,'H );hold on;for i=l:length (x)SNR=x(

溫馨提示

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

評論

0/150

提交評論