信息倫實驗MATLAB實現漢明碼編譯碼及誤碼率分析_第1頁
信息倫實驗MATLAB實現漢明碼編譯碼及誤碼率分析_第2頁
信息倫實驗MATLAB實現漢明碼編譯碼及誤碼率分析_第3頁
信息倫實驗MATLAB實現漢明碼編譯碼及誤碼率分析_第4頁
信息倫實驗MATLAB實現漢明碼編譯碼及誤碼率分析_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

信息論與編碼基礎課程實驗報告實驗名稱:Hamming碼編譯碼實驗學員姓名:學號:組別:專業:指導教師:班級:完成時間:2020年3月17日成績:

Hamming碼編譯碼實驗實驗目的和要求熟悉Hamming碼的設計原理,編程實現(15,11)Hamming碼的編碼和譯碼算法,驗證Hamming碼的檢錯能力和糾錯能力。實驗內容和原理內容:產生二進制(15,11)Hamming碼的生成矩陣,利用生成矩陣完成編碼,利用BSC模擬信道傳輸,產生二進制(15,11)Hamming碼的校驗矩陣,利用校驗矩陣完成譯碼。要求:改變信道轉移概率,繪制誤碼率和BSC信道轉移概率的關系圖。禁用encode和decode等MATLAB內置函數,可參考bsc函數。原理:Hamming碼是一種奇偶校驗系統,它將信息用邏輯形式編碼,只要增加少數幾個校驗位,就能檢測出一位出錯并自動改正,即實現自動糾錯。它的實現原理,是在k個數據位之外加上r個校驗位,從而形成一個k+r位的新碼字,使新碼字的碼距比較均勻地拉大。把數據的每一個二進制位分配在幾個不同的奇偶校驗位的組合中,當某一位出錯后,就會引起相關的幾個校驗位的值發生變化,這不但可以發現出錯,還能指出是哪一位出錯,為進一步自動糾錯提供了依據。可采用線性分組碼的通用編碼方法實現Hamming碼的編碼步驟,再采用伴隨式譯碼表方法完成Hamming碼的譯碼過程。操作方法和實驗步驟完成(15,11)Hamming碼編譯碼的MonteCarlo仿真,繪制誤碼率和BSC信道轉移概率的關系圖,分析其與理論糾錯能力之間的關系。漢明碼編碼漢明碼生成矩陣和一致校驗矩陣直接使用內置函數hammgen()獲得,生成信息元矩陣M,傳輸元矩陣C=M*G。模擬BSC信道模擬BSC信道傳輸,遍歷傳輸碼字矩陣C,使用rand生成均勻分布的隨機數,若該數大于p則傳輸誤碼。由于二元信源特性,使用模2加1即可實現0/1的互換。經過BSC后可得到接收碼字集合R,順便計算如果只傳輸信息元的誤碼率。漢明碼譯碼伴隨式譯碼,首先計算伴隨式,漢明碼的特性規律,陪集首與伴隨式譯碼表有關系,根據對應關系得到錯誤圖樣E,由進行譯碼。同時可計算漢明碼誤碼率。輸出關系圖輸出信道轉移概率和誤碼率的關系圖。實驗數據記錄和處理clearall;clc;r=4;%r=4,理論上對r取不同值可完成不同漢明碼實驗[H,G,n,k]=hammgen(r);%使用內置函數hammgen()生成漢明矩陣a=2^k;%為方便調用置a%%%%%%%%%%%%%%%漢明碼編碼部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%漢明碼編碼部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%漢明碼編碼部分%%%%%%%%%%%%%%%M=zeros(a,k);%信息組矩陣M,為a行k列fori=0:(a-1)m=dec2bin(i,k);%十進制轉2進制forj=1:k%將轉換成的二進制數依次給矩陣ifm(j)=='0'M(i+1,j)=0;elseM(i+1,j)=1;endendendC=mod(M*G,2);%生成傳輸矩陣C=M*G%%%%%%%%%%%%%%%信道傳輸部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信道傳輸部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信道傳輸部分%%%%%%%%%%%%%%T=0;%T用來計數,提供游標,最終記錄的是轉移概率p的次數forp=0.001:0.001:0.3T=T+1;R{T}=C;%R為傳輸矩陣a*n,由于p取值不同故放在不同單元中fori=1:a%遍歷每一行每一列的元素forj=1:nra=rand(1);%隨機生成一個0-1的數,此處是模擬BSC信道ifra<=p%如果隨機生成的ra<=p,對該元素模2加1就實現了0/1互換R{T}(i,j)=mod(R{T}(i,j)+1,2);endendenderr{T}=mod(R{T}+C,2);%err為等維度的矩陣,記錄錯誤信息碼所在位置為1ce=0;%ce為直接通過bsc的錯誤碼元數,每次置零fori=1:aifsum(err{T}(i,(n-k+1):n))>0ce=ce+1;%如果每行中出現1,則出現傳輸錯誤endendPce(T)=ce/a;%Pce記錄不同轉移概率情況下誤碼率ErrL(T)=1-(1-p)^n-n*p*(1-p)^(n-1);%ErrL記錄漢明碼理論誤碼率PceL(T)=1-(1-p)^k;%PceL記錄理論誤碼率end%%%%%%%%%%%%%%%%%%%接收譯碼部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%接收譯碼部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%接收譯碼部分%%%%%%%%%%%%%forz=1:TA{z}=zeros(a,n);%置A為譯碼輸出矩陣,a行,n列S=mod(R{z}*H',2);%計算R的伴隨式矩陣fori=1:a%遍歷S的每一行ifS(i,:)==zeros(1,n-k)%如果S=0,則傳輸無錯,直接把R給A(按行)A{z}(i,:)=R{z}(i,:);elseforj=1:n%出錯則遍歷,尋找伴隨式對應錯誤圖樣ifS(i,:)==H(:,j)'E=dec2bin(2^(n-j),n);%計算R的錯誤圖樣(來自網絡經驗)A{z}(i,:)=mod(R{z}(i,:)-E,2);%C=R-Ebreak;%如果找到直接跳出endendendendError{z}=mod(C+A{z},2);%Erroz記錄錯誤位置,用C模二加A即可ae=0;%同信道部分,記錄錯誤碼元個數fori=1:aifsum(Error{z}(i,(n-k+1):n))>0%如果出現一個以上1,則譯碼錯誤ae=ae+1;endendErr(z)=ae/a;%檢查譯碼與傳輸矩陣誤差end%%%%%%%%%%%%%%%%%%%輸出部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出部分%%%%%%%%%%%%%%%%p=0.001:0.001:0.3;figure(1);plot(p,Err,'r-',p,ErrL,'b-',p,Pce,'y-',p,PceL,'g-',p,(Pce-Err),'k-');legend('\it漢明碼實際誤碼率','\it漢明碼理論誤碼率','\it直接傳輸理論誤碼率','\it直接傳輸實際誤碼率','\it直接傳輸誤碼率與漢明碼誤碼率實際差值');gridon;title('BSC的轉移概率和漢明碼誤碼率關系曲線');xlabel('BSC轉移概率p');ylabel('誤碼率Pe');實驗結果與分析結果分析:當p較小時使用漢明碼傳輸顯著提升了誤碼率,當pe接近于1/15,即15個碼中期望出現一位錯誤時,直接傳輸誤碼率與漢明碼誤碼率的差值最大,此后漢明碼誤碼率逐漸增大,當pe接近于0.3時直接傳輸的誤碼率和漢明碼誤碼率都接近1。討論和心得思考:Hamming碼性能與哪些因素相關?答:漢明碼的性能與碼長,信道轉移概率有關。由于漢明碼是t=1的完備碼,固定可以糾正1個位錯碼,碼長為,信息元長度為校驗元r=n-k,易知隨r

溫馨提示

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

評論

0/150

提交評論