




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、*實踐教學* 蘭州理工大學計算機與通信學院2014年春季學期 通信系統仿真訓練 題 目: 漢明碼的編譯碼設計與仿真 專業班級: 姓 名: 學 號: 指導教師: 成 績: 摘要與其他的錯誤校驗碼類似,漢明碼也利用了奇偶校驗位的概念,通過在數據位后面增加一些比特,可以驗證數據的有效性。利用一個以上的校驗位,漢明碼不僅可以驗證數據是否有效,還能在數據出錯的情況下指明錯誤位置。在接收端通過糾錯譯碼自動糾正傳輸中的差錯來實現碼糾錯功能,成為前向糾錯FEC。在數據鏈路中存在大量噪音時,FEC可以增加數據吞吐量。通過傳輸碼列中假如冗余位(也稱糾錯位)。可以實現前向糾錯。但這種方法比簡單重傳協議的成本要高。漢
2、明碼利用奇偶塊機制降低了前向糾錯的成本。利用漢明碼(Hamming Code)是一種能夠自動檢測并糾正一位錯碼的線性糾錯碼,即SEC(Single Error Correcting)碼,用于信道編碼與譯碼中,提高通信系統抗干擾的能力。本文主要利用MATLAB中通信系統仿真模型庫進行漢明碼建模仿真,并調用通信系統功能函數進行編程,繪制編譯碼圖。在此基礎上,對漢明碼的性能進行分析,得出結論。關鍵詞:MATLAB 漢明碼 性能 目錄1.前 言12.漢明碼的構造原理22.1 漢明碼的構造原理22.2 監督矩陣H和生成矩陣G32.3 校正子(伴隨式)S43.漢明碼編碼器的設計63.1 漢明碼編碼方法63
3、.2 漢明碼編碼程序設計63.3 漢明碼編碼程序的編譯及仿真74.漢明碼的譯碼器的設計104.1 漢明碼譯碼方法104.2 漢明碼譯碼程序的設計114.3 漢明碼譯碼程序的編譯及仿真135.總結176.參考文獻187.附錄191.前 言線性分組碼是指將信息序列劃分為長度為K的序列段,在每一段后面附加r位的監督碼,且監督碼和信息碼之間構成線性關系,即它們之間可由線性方程組來聯系。這樣構成的抗干擾碼稱為線性分組碼。它是一種能夠糾正一位錯碼或檢測兩位錯碼的一種效率較高的線性分組碼。漢明碼是一種線性分組碼。 MATLAB(Matrix Laboratory,矩陣實驗室)是Mathwork公司推出的一套
4、高效率的數值計算和可視化軟件。其中,MATLAB通信工具箱是一套用于在通信領域進行理論研究、系統開發、分析設計和仿真的專業化工具軟件包。MATIAB通信工具箱由兩大部分組成:通信系統功能函數庫和SIMULINK通信系統仿真模型庫。MATLAB通信系統功能函數庫由七十多個函數組成,每個函數有多種選擇參數、函數功能覆蓋了現代通信系統的各個方面。這些函數包括:信號源產生函數、信源編碼解碼函數、糾錯控制編碼解碼函數、調制解調函數(基帶和通帶)、濾波器函數、傳輸信道模型函數(基帶和通帶)、TDMA、FDMA、CDMA函數、同步函數、工具函數等。以糾錯控制編解碼函數為例:函數庫提供了線性分組碼、漢明碼、循
5、環碼、BCH碼、里德一索洛蒙碼(REEDSOLOMON)、卷積碼等6種糾錯控制編碼,每種編碼又有編碼、解碼、矢量輸入輸出、序列輸入輸出等四種形式的函數表達。 本次課程設計的任務就是利用MATLAB技術實現漢明碼的編譯碼的設計和仿真。從而進一步加深對漢明碼編譯碼原理的理解。 2.(7,4)漢明碼的構造原理2.1 漢明碼的構造原理 線性分組碼是一類重要的糾錯碼,應用很廣泛。在(n,k)分組碼中,若監督碼元是按線性關系模2相加而得到的,則稱其為線性分組碼。現在以(7,4)分組碼為例來說明線性分組碼的特點。設其碼字為A=,前4位是信息元,后3位是監督元,可用下列線性方程組來描述該分組碼產生監督元: 顯
6、然,這3個方程是線性無關的。代入上述公式可得(7,4)碼的全部碼組,如表1所示。表1 (7,4)漢明碼的全部碼組信息位a6 a5 a4 a3監督位a2 a1 a0信息位a6 a5 a4 a3監督位a2 a1 a00000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111由上表可知:(7,4)漢明碼的最小碼距=3,它能糾1位錯或檢2位錯。由此可見,漢明碼是能夠糾正單個錯誤的線性分組碼,其特點是:最小碼距=3,碼長n與監督位r滿足關系
7、式:,說明上述所說的(7,4)線性分組碼就是漢明碼。同時,由于碼率,故當很大和很小時,碼率接近1,可見:漢明碼是一種高效碼。2.2 監督矩陣H和生成矩陣G 監督矩陣H式(3.1)所示的(7,4)漢明碼的監督方程可以改寫為:(式3.2.1)用矩陣的形式可以將上式表示為: (式3.2.2)并簡記為:或其中,H成為監督矩陣,只要H給定,信息位和監督位的關系也就隨即確定下來了。H的行數就是監督矩陣的數目,等于監督數目r。H序列可分為兩部分:(式3.2.3) 其中P為階矩陣,為階單位陣。因為或 ,所以可以用這個關系式來作為判斷接收碼字A是否出錯的依據。若,則說明碼字A有錯,反之則說明碼字A無錯。 生成矩
8、陣G若將(3.2.1式)的監督方程補充完整并寫成矩陣的形式:(式3.2.4)即:A=G·=G·M即漢明碼的編碼原理 上式中 G= (式3.2.5)G成為生成矩陣,根據式3.2.4知:由G和信息碼就能產生所有碼字。生成矩陣也可分為兩部分,即 G= (式3.2.6) 上式中 Q= (式3.2.7) Q為階矩陣,為階單位陣。2.3 校正子(伴隨式)S設一發送碼組A=,在傳輸的過程中可能發生誤碼。接受碼組B=,收發碼組之差定義為錯誤圖樣E。E=B-A (式3.3.1) 其中,E=,令S=,稱為校正子(伴隨式)。 (式3.3.2)可見:校正子S與錯誤圖樣E之間由確定的線性變換關系。(
9、7,4)漢明碼的校正子和錯誤圖樣之間的對應關系如表2所示。表2 (7,4)漢明碼S 與E 對應關系錯誤碼位錯誤圖樣E校正子S錯誤位置C 0 0 0 0 0 0 10 0 110 0 0 0 0 1 00 1 020 0 0 0 1 0 01 0 030 0 0 1 0 0 00 1 140 0 1 0 0 0 01 0 150 1 0 0 0 0 01 1 061 0 0 0 0 0 01 1 17無錯0 0 0 0 0 0 00 0 0無錯由上表可知:當S=001時,則出錯在0 位,即b0 出錯;當S=010時,則出錯在1 位,即b1 出錯;當S=100時,則出錯在2 位,即b2 出錯;當S
10、=011時,則出錯在3 位,即b3 出錯;當S=101時,則出錯在4 位,即b4 出錯;當S=110時,則出錯在5 位,即b5 出錯;當S=111時,則出錯在6 位,即b6 出錯;當S=000時,則無錯。3.(7,4)漢明碼編碼器的設計3.1 (7,4)漢明碼編碼方法 (7,4)漢明碼的編碼就是將輸入的4 位信息碼M= 加上3 位監督碼從而編成7位漢明碼,編碼輸出B= .由式A = M·G=·G 可知,信息碼M與生成矩陣G 的乘積就是編好以后的(7,4)漢明碼。3.2 (7,4)漢明碼編碼程序設計最后將上式計算所得的監督位和輸入的信息位一起輸出,則此次編碼就算完成了。 (7
11、,4)漢明碼的編碼源程序function f=hammingencod(a) G=1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1; %(7,4)漢明碼的生成矩陣 a=input('輸入信息元序列:'); c=mod(a*G,2); %編碼的碼字c disp('編碼后序列為:'); disp(c); End 編碼流程圖編碼程序的設計流程圖:開始輸入信息碼a6a5a4a3編出監督位b2b1b0輸出(7,4)漢明碼a6a5a4a3a2a1a0結束3.3 (7,4)漢明碼編碼程序的編譯及仿真function
12、 f=hammingencod(a) G=1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1; a=input('輸入信息元序列:'); c=mod(a*G,2); disp('編碼后序列為:'); disp(c);x=.01:.01:4;m,n=size(a'*ones(1,100);y=reshape(a'*ones(1,100)',1,m*n);plot(x,y)axis(0 4 0 1.5);set(gca,'XTick',0:1:4);set(gca,&
13、#39;YTick',0:0.5:1.5);title('hanmingencode')xlabel('value')ylabel('value')end輸入信息元序列1 0 0 0輸出序列為: 1 0 0 0 1 1 1 輸入信息元序列1 0 0 1輸出序列為: 1 0 0 1 1 0 0輸入信息元序列1 0 1 0輸出序列為: 1 0 1 0 0 1 0輸入信息元序列1 1 1 1輸出序列為: 1 1 1 1 1 1 1 4.(7,4)漢明碼的譯碼器的設計4.1 (7,4)漢明碼譯碼方法(7,4)漢明碼的譯碼器的功能就是把輸入的7 位
14、漢明碼B= 譯為4位信息碼,并且根據伴隨矩陣S 從而糾正編碼中可能出現的1 位錯碼。根據監督矩陣H和生成矩陣G的關系,即:H = ,其中是的單位陣,G = ,其中 是的單位陣, (式5.1.1)生成矩陣 G= 由式(5.1.1),得P=監督矩陣 由式(3.3.2)知,其中E=從而即可得到校正子S與(7,4)漢明碼各位之間的關系:算出校正子S()后,對照表2,即可判斷出哪位出錯,并糾正出錯的那位,從而輸出正確的碼字。4.2 (7,4)漢明碼譯碼程序的設計function g=hammingdecod(B) H=1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1;
15、 B=input('輸入接收序列B='); S=mod(B*H',2); %計算B的伴隨式 if S=0 disp('接收到的碼字無錯誤。'); E=dec2bin(0,7); end for i=1:1:7if S=H(:,i)' E=dec2bin(2(7-i),7); %計算R的錯誤圖樣 fprintf('錯誤出現在第%1.0f位n',i); break; end end a=mod(B-E,2); %計算原發送碼序列 disp('原發送碼字為:'); disp(a) 譯碼流程圖譯碼程序設計的流程圖:開始譯碼
16、輸入七位碼b6b5b4b3b2b1b0b2b1b0根據輸入求出校正子校正子S=0?輸出四位信息碼a3a2a1a0結束根據S與E的關系糾正錯碼NY4.3 (7,4)漢明碼譯碼程序的編譯及仿真function g=hammingdecod(B) H=1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1; B=input('輸入接收序列B='); S=mod(B*H',2); %計算B的伴隨式if S=0 disp('接收到的碼字無錯誤。'); E=dec2bin(0,7); end for i=1:1:7if S=H(:,i)
17、' E=dec2bin(2(7-i),7); %計算R的錯誤圖樣 fprintf('錯誤出現在第%1.0f位n',i); break; end end a=mod(B-E,2); %計算原發送碼序列 disp('原發送碼字為:'); disp(a) x=.01:.01:7;m,n=size(a'*ones(1,100); y=reshape(a'*ones(1,100)',1,m*n);m,n=size(B'*ones(1,100);z=reshape(B'*ones(1,100)',1,m*n);plot
18、(x,y)hold on;plot(x,z,'-r')axis(0 7 0 1.5);set(gca,'XTick',0:1:7);set(gca,'YTick',0:0.5:2.5);set(gca,'ZTick',0:0.5:2.5);title('hanmingdecode')xlabel('value')ylabel('value')zlabel('value')end輸入接收序列B=0 0 1 1 1 0 1錯誤出現在第4位原發送碼字為: 0 0 1 0 1
19、 0 1 輸入接收序列B=0 1 0 1 0 1 0錯誤出現在第1位原發送碼字為: 1 1 0 1 0 1 0 輸入接收序列B=0 0 0 1 1 0 1錯誤出現在第2位原發送碼字為: 0 1 0 1 1 0 1 輸入接收序列B=0 1 0 0 0 1 1錯誤出現在第3位原發送碼字為: 0 1 1 0 0 1 1 5.總結這次通信原理課程設計的題目是漢明碼的編碼、譯碼的仿真。通過到圖書館查閱相關的資料,得知漢明碼的編碼、譯碼仿真可以用FPGA和MATLAB來做。剛接到這個題目時,感覺有點迷茫和彷徨,不知道從何入手。盡管上學期剛學的信息論與編碼中也講過線性分組碼中的(7,4)漢明碼的編解碼方法,
20、在本次課題中,(7,4)漢明碼的編碼相對來說比較容易,程序也就一小段;解碼方面相對就比較復雜,用到了很多的變量。但是通過反復實踐和觀察,最終還是有所突破,并順利完成了課題要求。其次在畫圖和設置參數的時候遇到了不少困難。通過學習相關的教程和查閱MATLAB中的help,這些困難都迎刃而解,分別繪出編碼和譯碼的碼型。這其中我深刻地體會到專業知識的重要性。可想而知,理論知識對實際的操作有極大的幫助。通過本次學習,我再一次體會到MATLAB的強大。豐富的庫函數、強大的數據處理能力,出色的繪圖功能,友好的工作平臺,簡單一用的操作語言等等,這些優點都促使MATLAB成為數學處理軟件發展史上的巔峰之作。這激
21、發了我之后學習MATLAB的決心。知識的構架是千枝交錯的。學到大學,知識之間相互滲透的現象可謂比比皆是,這啟發我們不僅要發散思維的領域,也要拓寬知識的領域。6.參考文獻1 李建新.現代通信系統分析與仿真-MATLAB 通信工具箱.西安:西安電子科技大學,2000。2 樊昌信,曹麗娜.通信原理.北京:國防工業出版社,2008年.3趙靜.基于MATLAB的通信系統仿真.北京:北京航空航天大學出版社,2008年.4韓利竹,王華.MATLAB電子仿真與應用.北京:國防工業出版社,2003年.5陳萍.現代通信實驗系統的計算機仿真. 北京:國防工業出版社,20056吳偉陵等著. 移動通信原理. 北京:電子
22、工業出版社,20057.附錄1. 漢明碼編碼程序:function f=hammingencod(a) G=1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1; %(7,4)漢明碼的生成矩陣 a=input('輸入信息元序列:'); c=mod(a*G,2); %編碼的碼字c disp('編碼后序列為:'); disp(c); End 2. 漢明碼編碼作圖程序:function f=hammingencod(a) G=1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0
23、 0 0 1 0 1 1; a=input('輸入信息元序列:'); c=mod(a*G,2); disp('編碼后序列為:'); disp(c);x=.01:.01:4;m,n=size(a'*ones(1,100);y=reshape(a'*ones(1,100)',1,m*n);plot(x,y)axis(0 4 0 1.5);set(gca,'XTick',0:1:4);set(gca,'YTick',0:0.5:1.5);title('hanmingencode')xlabel(&
24、#39;value')ylabel('value')end3. 漢明碼譯碼程序:function g=hammingdecod(B) H=1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1; B=input('輸入接收序列B='); S=mod(B*H',2); %計算B的伴隨式if S=0 disp('接收到的碼字無錯誤。'); E=dec2bin(0,7); end for i=1:1:7if S=H(:,i)' E=dec2bin(2(7-i),7); %計算R的錯誤圖樣 fprintf('錯誤出現在第%1.0f位n',i); break; end end a=mod(B-E,2); %計算原發送碼序列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025春日城市農夫市集創意城市綠色蔬菜農夫市集活動方案【春季活動】
- 從辦公到生活看區塊鏈如何改變我們的世界
- 住院醫師教育培養卓越醫療團隊的關鍵
- 2025年中國壓力表隔離座數據監測研究報告
- 河南高一期末英語試卷及答案
- 2025年中國休閑服數據監測報告
- 2025年中國中國地理填充圖數據監測報告
- 2025車間職工安全培訓考試試題【典優】
- 2025年中國不銹鋼酒杯數據監測報告
- 2025年中國不銹鋼樓梯桿數據監測報告
- 民航重大安全隱患判定標準(試行)
- 羅氏蝦養殖存在幾個誤區介紹
- 2022-2023學年高中英語人教版(2019)必修第二冊Unit3The internet Reading and thinking課文詳解課件
- 精神科常見并發癥的預防規范風險防范預案與流程
- 衛生專業技術資格任職聘用證明表
- 2023市場營銷實習報告2000字
- GA/T 72-2013樓寓對講電控安全門通用技術條件
- 隱患排查治理獎懲臺賬
- 磁環介紹課件
- 新修訂《黃河保護法》PPT
- 宣講第二十次全國代表大會報告主題班會PPT
評論
0/150
提交評論