![海明編碼實驗報告_第1頁](http://file4.renrendoc.com/view/b1fb0c98b825d98f73b0e1d8a802a156/b1fb0c98b825d98f73b0e1d8a802a1561.gif)
![海明編碼實驗報告_第2頁](http://file4.renrendoc.com/view/b1fb0c98b825d98f73b0e1d8a802a156/b1fb0c98b825d98f73b0e1d8a802a1562.gif)
![海明編碼實驗報告_第3頁](http://file4.renrendoc.com/view/b1fb0c98b825d98f73b0e1d8a802a156/b1fb0c98b825d98f73b0e1d8a802a1563.gif)
![海明編碼實驗報告_第4頁](http://file4.renrendoc.com/view/b1fb0c98b825d98f73b0e1d8a802a156/b1fb0c98b825d98f73b0e1d8a802a1564.gif)
![海明編碼實驗報告_第5頁](http://file4.renrendoc.com/view/b1fb0c98b825d98f73b0e1d8a802a156/b1fb0c98b825d98f73b0e1d8a802a1565.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
海明編碼實驗報告實驗?zāi)康模荷羁汤斫夂C骶幋a,解碼的原理,通過用代碼將其實現(xiàn)掌握其中的技術(shù)。增強動手解決實際問題的能力以及編程,調(diào)試程序的能力。實驗原理:主要思想:碼字位的編號從左到右,最左邊的比特是第一位;數(shù)據(jù)比特和監(jiān)督比特融合在一起;監(jiān)督位處于2的幕數(shù)位位置,其它的位置放置數(shù)據(jù)比特;編碼后的碼串為行向量,用它乘以生成矩陣后,采用奇偶校驗方式,得2矩陣方程并求解該矩陣方程得到對應(yīng)監(jiān)督位的比特數(shù)值;p待發(fā)送的數(shù)據(jù)比特和比特一起構(gòu)臉了發(fā)送編碼碼字** **p*海明糾錯碼的格式3 4 5碼字的編號從左到右,最左邊是第一位,其中2的幕數(shù)位是檢驗位,其余是k個數(shù)據(jù)位(信息元)。*---信息元P---校驗位海明碼的編碼與譯碼的方法用矩陣乘法求檢驗位,并且找出錯誤位。設(shè)編碼長度為n=2r-1,其數(shù)據(jù)位長度k用矩陣乘法求檢驗位,并且找出錯誤位。設(shè)編碼長度為n=2r-1,其數(shù)據(jù)位長度k=nr。位數(shù)。brr-1r「b b—上;r—1rb(p校驗位插入到編碼序歹i|的*2j-l?)j=1,2,.1 ■'一列的矩陣。。.1曲r(樣本)建立一個(2r-1)行*r將編碼字寫成串形式的一維向量=(llll)1234bbAbb1-1 2r-1 r-1其中,lr=1或0(1=0為偶校驗,1=1為奇校驗),bij=1或0例:對數(shù)據(jù)1100進行編碼解:數(shù)據(jù)信息為40立1■取校驗位數(shù)量為解:數(shù)據(jù)信息為40立1■取校驗位數(shù)量為0羊0+0+〃+]+0+0=0⑴編碼長度尸=2r-1=7 +^3+++=數(shù)據(jù)"=n-r=4 <0+P+1+0+0+0+0=0校驗位1r=13 弓(pp1p100)12 3111100110101=(000)2p+0+1+0+1+0+0=0I1由矩陣乘法得,p1=0,p2=1,p3=1解得海明碼為0111100(+表示異或運算)譯碼過程:收到海明碼串以后,接收方把海明碼串作為行向量,乘以相同的樣本矩陣,檢查約定的奇偶校驗方式是否成立。類似編碼過程,進行矩陣方程運算;如果方程運算以后右邊的結(jié)果與約定的奇偶校驗行向量一致,則結(jié)果正確;如果方程運算以后右邊的結(jié)果與約定的奇偶校驗行向量不一致,則表明傳輸?shù)臄?shù)據(jù)有錯,且該結(jié)果行向量對應(yīng)的二進制比特轉(zhuǎn)換為十進制數(shù)所對應(yīng)編號的比對例題所得到的海明編碼結(jié)果0111100,那阿結(jié)果無錯。特出錯,把該比特0對例題所得到的海明編碼結(jié)果0111100,那阿結(jié)果無錯。0111100進行傳輸,如果接收到的也是1000,接收方的判斷過程為:首先進行矩陣矩陣運算的結(jié)果行向量為(101),不是(000),接收到的碼字有錯誤,錯誤比特的位置為5,因此,把0111000碼串的第5個比特取反為“1”,則結(jié)果變?yōu)椤?111100”,為正確的碼字。實驗過程:根據(jù)實驗原理即可確定編程思路:令編碼長度為7位,其中校驗位為3位。將矩陣存入全局數(shù)組Matrix中,用函數(shù)code進行編碼(偶校驗),數(shù)組output保存編碼。隨機改變其中一位的值使之取反,然后用函數(shù)decode解碼得到三位校驗位的值,它們表示的二進制數(shù)即為出錯位。代碼如下:#include<stdio.h>#include<stdlib.h>intcheck_bit(inte,intx);〃指數(shù)函數(shù),計算e^x,判斷校驗位在數(shù)組中的位置voidcode(int*in,int*output);〃編碼函數(shù),將隨機輸入的4位與3位校驗位組合得到7位數(shù)組voiddecode(int*input,int*check);〃解碼函數(shù),判斷出錯位intconvertmsg(char*a,int*b);〃信息轉(zhuǎn)換函數(shù),將字符串轉(zhuǎn)換為整型數(shù)組,返回值是數(shù)組元素個數(shù)intMatrix[3][7]={{0,0,0,1,1,1,1},{0,1,1,0,0,1,1},{1,0,1,0,1,0,1}};〃全局變量,用于存放運算的矩陣voidmain(){chara[20];//存放輸入的比特intinput[4]={0};//存放轉(zhuǎn)換后的4位比特intoutput[7]={0};//存放帶校驗位的7位比特intresult[3]={0};//存放解碼的3位校驗位inti,j,n;//用于判斷和循環(huán)的變量i=0;j=0;printf("\nPleaseinputthe4-bit-massage:\n");/*為提高程序健壯性,輸入在循環(huán)中進行,只有輸入正確才能跳出循環(huán),執(zhí)行后面的運算*/while(j!=4||n!=0){n=0;scanf("%s",a);while(a[i])//逐位檢測{if(a[i]!='0'&&a[i]!=T){n=1;break;//輸入非0,1時出錯}i++;}j=convertmsg(a,input);//把字符串轉(zhuǎn)換為數(shù)組并統(tǒng)計位數(shù)if(j!=4||n!=0)//輸入不是4位或有非0,1比特時報錯printf("Errorinput!Pleasetryagain!\n");}code(input,output);//對輸入與校驗位進行編碼printf("NowtheHammingcodeis:\n");for(i=0;i<7;i++)printf("%d",output[i]);randomize();n=random(7);//產(chǎn)生隨機數(shù)確定出錯位printf("\nThenassumetheerrorbitisNo.%d\n”,n+1);output[n]=output[n]?0:1;//出錯位取反decode(output,result);//對出錯后的編碼取反printf("Afterdecodingweknowtheerrorbitis");for(i=0;i<3;i++)//輸出校驗位printf("%d",result[i]);}〃編碼函數(shù)voidcode(int*in,int*output){inttemp[7]={1,1,1,1,1,1,1};//臨時數(shù)組先全部置1inti=0,j=0,k=0;//用于循環(huán),判斷for(i=0;i<3;i++)temp[check_bit(2,i)-1]=0;//確定校驗位并置0for(i=0;i<7;i++){if(temp[i])//把輸入的數(shù)據(jù)存入沒有置0的非校驗位{temp[i]=in[j];output[i]=in[j];j++;}}for(i=0;i<3;i++)//將數(shù)組與矩陣進行乘法運算計算校驗位{k=0;for(j=0;j<7;j++){if(temp[j]&&Matrix[i][j])k++;}if(k%2)//根據(jù)偶校驗運算規(guī)則,若1的個數(shù)為偶數(shù)則校驗位為1output[check_bit(2,2-i)-1]=1;}〃指數(shù)函數(shù),確定校驗位intcheck_bit(inte,intx){inttemp=1;while(x){temp*=e;x--;}returntemp;}〃解碼函數(shù),原理同編碼函數(shù),check存放校驗位voiddecode(int*input,int*check){inti=0,j=0,k=0;for(i=0;i<3;i++){k=0;for(j=0;j<7;j++){if(input[j]&&Matrix[i][j])k++;}if(k%2)check[i]=1;elsecheck[i]=0;}}intconvertmsg(char*a,int*b){inti=0;char*p=a;while(*p){b[i]=(*p)-48;i++;p++;}returni;}實驗結(jié)果:運行程序檢查其正確性,運行結(jié)果如下:[X)SBox0.72PCpuCycles:mai.Frameskip0rProgram:TCZ:\>pathC:\TC3G\BINZ:X>C:C:\>cd\TC30\EIMbxiotMiiriyiiPleaseinputthe4-bit-massaye:221G^rrorinput!MeasetryagainT11011Errnrin]pii+fP1easrptr'yarjctirf110GNoutheHamniingcodeis:0111100ThemassumetheerrorbitisNo.1AfterdecodingweknoutheerrorLitis091Pleaseinputthe4-bit-massage:1011NoutheHaMtiirgcodeis:011G01LThemassumetheerrorbitisNo.ZAfterdecodingweKnoutheerrorbitisfcJLQ此圖給出了程序運行兩次的結(jié)果。首先輸入非法數(shù)據(jù)2210,程序報錯;再輸入5位不符合要求的數(shù)據(jù),同樣報錯;再輸入合法數(shù)據(jù)1100(例題中的數(shù)據(jù)),顯示海明編碼為0111100,正確;此時隨機使第1位出錯取反,則輸出校驗位為001,正確。第二次運行輸入
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度醫(yī)院保安部臨時工服務(wù)合同范本3篇
- 中國石油化工合作項目采購協(xié)議
- 智能家居智能控制器采購合同
- 人力資源外包服務(wù)與薪酬分配合同
- 大數(shù)據(jù)環(huán)境下農(nóng)產(chǎn)品質(zhì)量安全追溯與管理方案
- 安徒生童話故事中的生活哲理征文
- 軟件研發(fā)服務(wù)合作協(xié)議
- 安置房房屋買賣合同范本
- 全案品牌服務(wù)合同范本
- 安置小區(qū)租房合同范本
- 九年級上冊-備戰(zhàn)2024年中考歷史總復(fù)習(xí)核心考點與重難點練習(xí)(統(tǒng)部編版)
- 健康指南如何正確護理蠶豆病學(xué)會這些技巧保持身體健康
- 老客戶的開發(fā)與技巧課件
- 2024建設(shè)工程人工材料設(shè)備機械數(shù)據(jù)分類和編碼規(guī)范
- 26個英文字母書寫(手寫體)Word版
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗方法和判定規(guī)則
- DB31 SW-Z 017-2021 上海市排水檢測井圖集
- 日語專八分類詞匯
- GB/T 707-1988熱軋槽鋼尺寸、外形、重量及允許偏差
- GB/T 33084-2016大型合金結(jié)構(gòu)鋼鍛件技術(shù)條件
- 高考英語課外積累:Hello,China《你好中國》1-20詞塊摘錄課件
評論
0/150
提交評論