BCH碼編譯碼matlab仿真_第1頁
BCH碼編譯碼matlab仿真_第2頁
BCH碼編譯碼matlab仿真_第3頁
BCH碼編譯碼matlab仿真_第4頁
BCH碼編譯碼matlab仿真_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、信道編碼姓 名:郭宇琦 學 號:xxx2009xxx一、 實驗目的1. 復習鞏固BCH碼編碼譯碼知識。2. 使用matlab進行實踐編寫BCH,了解實際應用中BCH的編碼譯碼過程。3. 結合實踐驗證所學BCH碼知識。二、 實驗原理BCH 碼是用于校正多個隨機錯誤的多級、循環、錯誤校正、變長數字編碼,是循環碼的子類。本原BCH碼編碼原理如下:1. 確定n、m、t.2. 用函數構造擴域,q=2取二進制,3. 取本原元,根據糾錯能力t,確定連續根。通過逐個驗證每個元素來找出每一個根的全部共軛根系。根據計算最小多項式。4. 所有非共軛根系的最小多項式乘積得到生成多項式5. 利用系統碼編碼方程,進行編碼

2、。BCH碼譯碼方法主要有Peterson譯碼法和Berlekamp迭代譯碼法等,其中Peterson譯碼方法如下:1. 計算伴隨式。已知接受向量,則2求解錯誤位置。引入錯誤位置多項式,將求解錯誤位置的問題轉化為求解線性方程組的問題 3用Peterson譯碼方法譯碼,解出錯誤位置多項式系數和錯誤圖樣,得到估值碼字。 (1).假設e=t,計算S行列式M的值。M=0則降階,e=e-1,同樣計算直到M0. (2)將上面得到的2t個連續根代入試根,求上述方程組解。取倒數即為錯誤位置。由此寫出錯誤圖樣。 (3)求出譯碼。每一步具體的實現方法,詳見程序源代碼注釋。三、 程序框圖編碼框圖過信道框圖譯碼框圖四、

3、 實驗結果分析結果截圖:上面是較高信噪比時127位BCH正確譯碼下面是較低信噪比時127為BCH錯誤譯碼結果框內容(加粗部分是手動輸入內容,下劃線是結果重點):-簡易BCH編碼譯碼系統-輸入碼長n=128錯誤:只支持本原BCH碼輸入碼長n=127輸入糾錯能力t=6計算得碼長 k=85自動生成隨機信息序列輸入1,手動鍵入信息序列輸入0 :1隨機生成的序列為 m= 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0

4、1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1編碼后生成碼序列為 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1

5、 0 1 0 1 1 1 0過高斯白信道輸入1,過理想信道輸入0 :1輸入信道信噪比(單位分貝,15左右較合適):10接收碼字為0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0

6、0 1 0 1 0 1 1 1 0發送碼字為0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0通過信道后出錯 4 位錯誤圖樣為 0 0 0 0

7、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0譯碼結果為 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1

8、 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0還原信息序列為m= 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0

9、0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1譯碼正確 五、 實驗小結整個過程嚴格按照所學BCH碼相關知識編寫,所得結論完全正確。六、 源代碼clcclear all%-disp('-簡易BCH編碼譯碼系統-')flag=1;while(flag) %輸入n n=input('輸入碼長n='); m=0; while(2m-1=n&&m<20) %計算m m=m+1; end if(m=20) %非本原就重新輸入 disp

10、('錯誤:只支持本原BCH碼') else flag=0; endendflag=1;while(flag) %輸入t t=input('輸入糾錯能力t='); if(t>=floor(n-1)/2)|(t<=0) disp('錯誤:糾錯能力不能為0或者不能太大') else flag=0; endend%-a=gf(2,m); %構造擴域,matlab自動只把a當做擴域中的本原元for i=1:2:(2*t-1) %求最小多項式,只找奇數項 b=1,ai; %讓b分別為ai.找每一個(這么定義是要卷積的) l=i; while ai

11、=a(2*l) %找共軛根系 l=2*l; b=conv(b,1,al);%求最小多項式 end if i=1 g=b; else g=conv(g,b); %求生成多項式 利用卷積,進行連乘 endend%-gx=double(g.x);%從擴域到數域 相當于變成多項式k=n-length(gx)+1;%k=n-(r+1)+1disp('計算得碼長 k=',num2str(k)flag=1;while(flag) temp=input('自動生成隨機信息序列輸入1,手動鍵入信息序列輸入0 :n'); if temp mx=round(rand(1,k);%隨機

12、生成信息組 disp('隨機生成的序列為 m= ',num2str(mx) flag=0; else inputm=str2mat(input('輸入信息序列','s'); if length(inputm)=k disp('錯誤:輸入碼長應為',num2str(k) else flag=0; end mx=str2num(inputm(:)' endend%-x1=zeros(1,length(gx); %循環碼編碼方程中的x1(1)=1;c1=conv(x1,mx); %碼字的前k位,編碼方程第一項q,r=deconv

13、(c1,gx);r=mod(r,2); %編碼方程第二項c=mod(c1+r,2); %生成系統碼,轉換成為二進制disp('編碼后生成碼序列為 ',num2str(c)%-judge=input('過高斯白信道輸入1,過理想信道輸入0 :n');if judge=1 SNR=input('輸入信道信噪比(單位分貝,15左右較合適):'); rr=awgn(c,SNR); %過信道else rr=c;endfor i=1:n %量化為01序列 if rr(i)>=0.5 r(i)=1; else r(i)=0; endenddisp(

14、9;接收碼字為',num2str(r)disp('發送碼字為',num2str(c)enum=0;for i=1:n if r(i)=c(i) enum=enum+1; endenddisp('通過信道后出錯 ',num2str(enum),' 位')%-s=a+a; %構造伴隨式,初始化sfor i=1:2*t s(i)=a+a; for j=1:n s(i)=s(i)+r(j)*a(n-j)*i); endendfor e=t:-1:1 %降階 A=a+a; for i=1:e for j=1:e A(i,j)=s(e+i-j); end end if det(A)=0 break; %判斷行列式是否為奇異,是就繼續降 endendd=rank(A); %開始求方程組B=a+a;for i=1:d B(i)=s(d+i);endif A=a+a %接受的碼字出錯的情況 cc=r; E=zeros(1,n);else sigma=A(B'); %錯誤位置多項式的系數 E=zeros(1,n); x=a+a; ki=1; for i=1:n %試根 h=a0; for j=1:d h=h+sigma(j)*a(i*j); end if h=a+a x(k)=a(n-i); E(i)=

溫馨提示

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

評論

0/150

提交評論