漢明碼檢糾錯課程設(shè)計報告_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  I 摘 要 </p><p>  通信技術(shù)與人們的生活越來越緊密,對通信技術(shù)的仿真和研究使復(fù)雜的通信過程變得</p><p>  簡單直觀化。文中對編碼通信中漢

2、明碼的編譯碼原理進行了分析,并用 Matlab 語言仿真,不但簡化了學(xué)生的學(xué)習(xí)過程,提高了教學(xué)效果,而且激發(fā)了其學(xué)習(xí)興趣。差錯控制技術(shù)可以提高信息傳輸?shù)臏蚀_性。該技術(shù)采用可靠的,有效的信道編碼方法來實現(xiàn)的。 糾錯碼是一種差錯控制技術(shù),目前已廣泛應(yīng)用于各種通信系統(tǒng)和計算機系統(tǒng)中,糾錯編碼主要用于數(shù)字系統(tǒng)的差錯控制,對于保證通信、存儲、媒體播放和信息轉(zhuǎn)移等數(shù)字傳遞過程的質(zhì)量有著重要意義,是通信、信息類科知識結(jié)構(gòu)中不可缺少的一部分。 

3、;</p><p>  關(guān)鍵字:仿真、MATLAB、漢明碼</p><p><b>  一、前言</b></p><p>  MATLAB通信系統(tǒng)功能函數(shù)庫由七十多個函數(shù)組成,每個函數(shù)有多種選擇參數(shù)、函數(shù)功能覆蓋了現(xiàn)代通信系統(tǒng)的各個方面。信道編碼是人為地按照一定的規(guī)則加入人工剩余,從而使信息傳輸中的差錯率降低,甚至達到無錯傳輸?shù)囊环N提高信息系統(tǒng)

4、可靠性的編碼方法,是現(xiàn)代通信系統(tǒng)廣泛采用的一種差錯控制措施。以糾錯控制編解碼函數(shù)為例:函數(shù)庫提供了線性分組碼、漢明碼、循環(huán)碼、BCH碼、里德一索洛蒙碼(REED—SOLOMON)、卷積碼等6種糾錯控制編碼,每種編碼又有編碼、解碼、矢量輸入輸出、序列輸入輸出等四種形式的函數(shù)表達。在信道編碼中,有一類所謂漢明碼,在理論上已十分成熟,并且在通信實踐中已被廣泛使用。本文簡述了漢明碼的編碼方法、譯碼方法做一簡述,并給出相應(yīng)的Matlab 計算程序

5、。</p><p><b>  二、設(shè)計主體</b></p><p>  2.1漢明碼編碼原理</p><p>  一般來說,若漢明碼長為n,信息位數(shù)為k,則監(jiān)督位數(shù)r=n-k。若希望用r個監(jiān)督位構(gòu)造出r個監(jiān)督關(guān)系式來指示一位錯碼的n種可能位置,則要求</p><p><b>  或 </b>

6、;</p><p>  下面以(7,4)漢明碼為例說明原理: </p><p>  設(shè)漢明碼(n,k)中k=4,為了糾正一位錯碼,由式(1)可知,要求監(jiān)督位數(shù)r≥3。若取r=3,則n=k+r=7。我們用來表示這7個碼元,用的值表示3個監(jiān)督關(guān)系式中的校正子,則的值與錯誤碼元位置的對應(yīng)關(guān)系可以規(guī)定如表1所列。</p><p>  表1 校正子和錯碼位置的關(guān)系</p

7、><p>  則由表1可得監(jiān)督關(guān)系式:</p><p><b>  (2)</b></p><p><b>  (3) </b></p><p>  ⊕ (4)</p><p>  在發(fā)送端編碼時,信息位的值決定于輸入信號,因此它們是隨機的。監(jiān)督位、、應(yīng)根據(jù)信息位的取

8、值按監(jiān)督關(guān)系來確定,即監(jiān)督位應(yīng)使式(2)~式(4)中、、的值為0(表示編成的碼組中應(yīng)無錯碼) </p><p><b>  (5)</b></p><p>  式(5)經(jīng)過移項運算,接觸監(jiān)督位</p><p><b>  (6)</b></p><p>  式(5)其等價形式為:</p>

9、<p><b>  (7)</b></p><p>  式(6)還可以簡記為</p><p><b>  或</b></p><p><b>  其中 </b></p><p><b>  所以有</b></p>&l

10、t;p><b>  式(6)等價于</b></p><p><b>  (10)</b></p><p>  其中Q為P的轉(zhuǎn)置,即</p><p>  式(10)表示,信息位給定后,用信息位的行矩陣乘矩陣Q就產(chǎn)生出監(jiān)督位。</p><p>  我們將Q的左邊加上一個k×k階單位方陣,

11、就構(gòu)成一個矩陣G</p><p><b>  (12)</b></p><p>  G稱為生成矩陣,因為由它可以產(chǎn)生整個碼組,即有</p><p><b>  (13)</b></p><p>  或者 (14)</p><p>  式(13)即漢明碼

12、的編碼原理</p><p>  2.2漢明碼糾錯原理</p><p>  當數(shù)字信號編碼成漢明碼形式(本文中即A)后在信道中傳輸,由于信道中噪聲的干擾,可能由于干擾引入差錯,使得接收端收到錯碼,因此在接收端進行漢明碼糾錯,以提高通信系統(tǒng)的抗干擾能力及可靠性。</p><p>  一般來說接收碼組與A不一定相同。若設(shè)接收碼組為一n列的行矩陣B,即 </p>

13、<p><b>  (15)</b></p><p>  則發(fā)送碼組和接收碼組之差為</p><p>  (16) </p><p>  E就是傳輸中產(chǎn)生的錯碼行矩陣</p><p><b>  (17)</b></p>

14、;<p>  若ei=0,表示接收碼元無錯誤,若ei=1,則表示該接收碼元有錯。式(16)可改寫成 </p><p><b>  (18)</b></p><p>  若E=0,即接收碼組無錯,則,將它代人式(8),該是仍成立,即有</p><p><b>  (19)</b></p>&

15、lt;p>  當接收碼組有錯時,E≠0,將B帶入式(8)后,該式不一定成立。在未超過檢錯能力時,式(19)不成立。假設(shè)此時式(19)的右端為S,即</p><p><b>  (20)</b></p><p>  將 代入式(20),可得</p><p>  由式(8)可知,所以</p><p><b>

16、  (21)</b></p><p>  此處S與前面的有著一一對應(yīng)關(guān)系,則S能代表錯碼位置。</p><p>  因此,糾錯原理即,接收端收到碼組后按式(20)計算出S,再根據(jù)表1判斷錯碼情況,進行差錯糾正。</p><p>  三、漢明碼編碼的設(shè)計</p><p>  3.1 漢明碼編碼方法</p><p&

17、gt;  (7,4)漢明碼的編碼就是將輸入的4 位信息碼M=[ ]加上3 位監(jiān)督碼從而編成7位漢明碼[],編碼輸出B=[ ].</p><p>  由式A = M·G=[]·G 可知,信息碼M與生成矩陣G 的乘積就是編好以后的(7,4)漢明碼。</p><p><b>  3、2編碼流程圖</b></p><p>  編碼程

18、序的設(shè)計流程圖</p><p>  3.3 漢明碼編碼程序設(shè)計</p><p>  根據(jù)(7,4)漢明碼的編碼原理,將上式計算所得的監(jiān)督位和輸入的信息位一起輸出,則此次編碼就算完成了。 (7,4)漢明碼的編碼源程序見下文附錄。</p><p>  四、漢明碼的譯碼器的設(shè)計</p><p>  4、1 漢明碼譯碼方法</p>&l

19、t;p>  (7,4)漢明碼的譯碼器的功能就是把輸入的7 位漢明碼B=[] 譯為4位信息碼,并且根據(jù)伴隨矩陣S 從而糾正編碼中可能出現(xiàn)的1 位錯碼。</p><p>  根據(jù)監(jiān)督矩陣H和生成矩陣G的關(guān)系,即:</p><p>  H = [ ] ,其中是的單位陣,</p><p>  G = [ ] ,其中 是的單位陣,</p><p>

20、;<b>  (式4.1.1)</b></p><p><b>  生成矩陣??</b></p><p>  ? G== 由式(4.1.1),得P=</p><p><b>  監(jiān)督矩陣</b></p><p>  ???????

21、 (式4.1.2)</p><p><b>  ?</b></p><p>  由式(2.2.2)知,其中E=[]從而即可得到校正子S與(7,4)漢明碼各位之間的關(guān)系:</p><p>  算出校正子S()后,對照表2,即可判斷出哪位出錯,并糾正出錯的那位,從而輸出正確的碼字。</p><p>  表3 (7,

22、4)漢明碼譯碼輸入、輸出對應(yīng)關(guān)系</p><p><b>  4.2譯碼流程圖</b></p><p>  譯碼程序設(shè)計的流程圖:</p><p>  4.3漢明碼譯碼程序的設(shè)計</p><p>  第1 位(a0)出錯,則C 輸出0;若第2 位出錯,則C 輸出1;??;若無錯,則C 輸出0。這樣譯碼程序就可以編出來了。

23、譯碼源程序見附錄。</p><p>  五、漢明碼編譯碼程序及仿真波形</p><p>  5.1漢明碼編碼源程序及仿真圖</p><p>  function f=hammingencod(a) </p><p>  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];

24、 </p><p>  a=input('輸入信息元序列:'); </p><p>  c=mod(a*G,2); </p><p>  disp('編碼后序列為:'); </p>&

25、lt;p><b>  disp(c);</b></p><p>  x=.01:.01:4;</p><p>  [m,n]=size([a]'*ones(1,100));</p><p>  y=reshape(([a]'*ones(1,100))',1,m*n);</p><p><

26、;b>  plot(x,y)</b></p><p>  axis([0 4 0 1.5]);</p><p>  set(gca,'XTick',0:1:4);</p><p>  set(gca,'YTick',0:0.5:1.5);</p><p>  title('hanmin

27、gencode')</p><p>  xlabel('value')</p><p>  ylabel('value')</p><p><b>  end</b></p><p>  5.2漢明碼譯碼源程序及仿真圖</p><p>  function

28、g=hammingdecod(B) </p><p>  H=[1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1]; </p><p>  B=input('輸入接收序列B='); </p><p>  S=mod(B*H',2); %計算B的伴隨式</p><

29、p><b>  if S==0 </b></p><p>  disp('接收到的碼字無錯誤。'); </p><p>  E=dec2bin(0,7); </p><p><b>  end </b></p><p>  for i=1:1:7</p><

30、p>  if S==H(:,i)' </p><p>  E=dec2bin(2^(7-i),7); %計算R的錯誤圖樣</p><p>  fprintf('錯誤出現(xiàn)在第%1.0f位\n',i); </p><p><b>  break; </b></p><p><b>

31、;  end </b></p><p><b>  end </b></p><p>  a=mod(B-E,2); %計算原發(fā)送碼序列</p><p>  disp('原發(fā)送碼字為:'); </p><p><b>  disp(a) </b><

32、;/p><p>  x=.01:.01:7;</p><p>  [m,n]=size([a]'*ones(1,100));</p><p>  y=reshape(([a]'*ones(1,100))',1,m*n);</p><p>  [m,n]=size([B]'*ones(1,100));</p&g

33、t;<p>  z=reshape(([B]'*ones(1,100))',1,m*n);</p><p><b>  plot(x,y)</b></p><p><b>  hold on;</b></p><p>  plot(x,z,'--r')</p>&

34、lt;p>  axis([0 7 0 1.5]);</p><p>  set(gca,'XTick',0:1:7);</p><p>  set(gca,'YTick',0:0.5:2.5);</p><p>  set(gca,'ZTick',0:0.5:2.5);</p><p> 

35、 title('hanmingdecode')</p><p>  xlabel('value')</p><p>  ylabel('value')</p><p>  zlabel('value')</p><p><b>  end</b></p

36、><p>  輸入接收序列B=[1 0 1 0 0 1 0]</p><p>  接收到的碼字無錯誤。</p><p><b>  原發(fā)送碼字為:</b></p><p>  1 0 1 0 0 1 0</p><p>  輸入接收序列B=[1 0 1

37、0 1 1 0]</p><p><b>  錯誤出現(xiàn)在第5位</b></p><p><b>  原發(fā)送碼字為:</b></p><p>  1 0 1 0 0 1 0</p><p><b>  六、總結(jié)</b></p&

38、gt;<p>  本文探討了漢明碼的編譯碼過程,并給出了相應(yīng)的 Matlab 程序,仿真結(jié)果表明結(jié)果正確。這次通信原理課程設(shè)計我做的是(7,4)漢明碼的編譯碼的設(shè)計,剛接到這個題目時,感覺有點迷茫和彷徨,不知道從何入手。通過查閱以前的書籍資料,對相關(guān)知識進行溫習(xí),通過反復(fù)溫習(xí),終于領(lǐng)會了(7,4)漢明碼的編解碼的原理、方法,頓時覺得豁然開朗,腦海里也有了大致的實施方案。這其中我深刻地體會到專業(yè)英語的重要性。可想而知,多積累

39、點英語對今后的工作、學(xué)習(xí)將有極大的幫助。通過本次學(xué)習(xí),我再一次體會到MATLAB的強大。豐富的庫函數(shù)、強大的數(shù)據(jù)處理能力,出色的繪圖功能,友好的工作平臺,簡單一用的操作語言等等,這些優(yōu)點都促使MATLAB成為數(shù)學(xué)處理軟件發(fā)展史上的巔峰之作。這激發(fā)了我之后學(xué)習(xí)MATLAB的決心。知識的構(gòu)架是千枝交錯的。學(xué)到大學(xué),知識之間相互滲透的現(xiàn)象可謂比比皆是,這啟發(fā)我們不僅要發(fā)散思維的領(lǐng)域,也要拓寬知識的領(lǐng)域。對與本專業(yè)相關(guān)的領(lǐng)域多加了解百利而無一害

40、。</p><p><b>  七、參考文獻</b></p><p>  趙靜 基于MATLAB的通信系統(tǒng)仿真 北京:北京航空航天大學(xué)出版社,2008年. </p><p>  樊昌信 通信原理.北京:國防工業(yè)出版社,2002</p><p>  劉敏 MATLAB通信仿真與應(yīng)用 國防工業(yè)出版

41、社</p><p>  曹志剛等著 現(xiàn)代通信原理 北京:清華大學(xué)出版社,2001 5</p><p>  吳偉陵等著 移動通信原理 北京:電子工業(yè)出版社,2005</p><p>  李建新 現(xiàn)代通信系統(tǒng)分析與仿真—MATLAB通信工具箱.西安:西安電子科技大學(xué)出版社,2000</p><p>  韓利竹,王華 MATLAB電子

42、仿真與應(yīng)用 北京:國防工業(yè)出版社,2003年.</p><p>  葛哲學(xué) 精通MATLAB 北京:電子工業(yè)出版社,2008年.</p><p><b>  附錄</b></p><p>  一、(7,4)漢明碼編碼源程序</p><p>  function f=hammingencod(a) </p&

43、gt;<p>  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]; </p><p>  a=input('輸入信息元序列:'); </p><p>  c=mod(a*G,2);

44、 </p><p>  disp('編碼后序列為:'); </p><p><b>  disp(c);</b></p><p>  x=.01:.01:4;</p><p>  [m,n]=size([a]'*ones(1,100));</p>&l

45、t;p>  y=reshape(([a]'*ones(1,100))',1,m*n);</p><p><b>  plot(x,y)</b></p><p>  axis([0 4 0 1.5]);</p><p>  set(gca,'XTick',0:1:4);</p><p>

46、;  set(gca,'YTick',0:0.5:1.5);</p><p>  title('hanmingencode')</p><p>  xlabel('value')</p><p>  ylabel('value')</p><p><b>  end&l

47、t;/b></p><p>  二、(7,4)漢明碼譯碼源程序</p><p>  function g=hammingdecod(B) </p><p>  H=[1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1]; </p><p>  B=input('輸入接收序列B='); &

48、lt;/p><p>  S=mod(B*H',2); %計算B的伴隨式</p><p><b>  if S==0 </b></p><p>  disp('接收到的碼字無錯誤。'); </p><p>  E=dec2bin(0,7); </p><p&

49、gt;<b>  end </b></p><p>  for i=1:1:7</p><p>  if S==H(:,i)' </p><p>  E=dec2bin(2^(7-i),7); %計算R的錯誤圖樣</p><p>  fprintf('錯誤出現(xiàn)在第%1.0f位\n',i);

50、</p><p><b>  break; </b></p><p><b>  end </b></p><p><b>  end </b></p><p>  a=mod(B-E,2); %計算原發(fā)送碼序列</p><p>  

51、disp('原發(fā)送碼字為:'); </p><p><b>  disp(a) </b></p><p>  x=.01:.01:7;</p><p>  [m,n]=size([a]'*ones(1,100));</p><p>  y=reshape(([a]'*ones(1,100)

52、)',1,m*n);</p><p>  [m,n]=size([B]'*ones(1,100));</p><p>  z=reshape(([B]'*ones(1,100))',1,m*n);</p><p><b>  plot(x,y)</b></p><p><b> 

53、 hold on;</b></p><p>  plot(x,z,'--r')</p><p>  axis([0 7 0 1.5]);</p><p>  set(gca,'XTick',0:1:7);</p><p>  set(gca,'YTick',0:0.5:2.5);&l

54、t;/p><p>  set(gca,'ZTick',0:0.5:2.5);</p><p>  title('hanmingdecode')</p><p>  xlabel('value')</p><p>  ylabel('value')</p><p&g

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論