版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、(7,4)漢明碼編譯碼原理程序說明書1、線性分組碼假設(shè)信源輸出為一系列二進制數(shù)字0和1.在分組碼中,這些二進制信息序列分成固定長度的消息分組(message blocks)。每個消息分組記為u,由k個信息位組成。因此共有種不同的消息。編碼器按照一定的規(guī)則將輸入的消息u轉(zhuǎn)換為二進制n維向量v,這里n>k。此n維向量v就叫做消息u的碼字(codeword)或碼向量(code vector)。因此,對應(yīng)于種不同的消息,也有種碼字。這個碼字的集合就叫一個分組碼(block code)。一個長度為n,有個碼字的分組碼,當(dāng)且僅當(dāng)其個碼字構(gòu)成域GF(2)上所有n維向量空間的一個k維子空間時被稱為線性(
2、linear)(n,k)碼。對于線性分組碼,希望它具有相應(yīng)的系統(tǒng)結(jié)構(gòu)(systematic structure),其碼字可分為消息部分和冗余校驗部分兩個部分。消息部分由k個未經(jīng)改變的原始信息位構(gòu)成,冗余校驗部分則是n-k個奇偶校驗位(parity-check)位,這些位是信息位的線性和(linear sums)。具有這樣的結(jié)構(gòu)的線性分組碼被稱為線性系統(tǒng)分組碼(linear systematic block code)。本實驗以(7,4)漢明碼的編譯碼來具體說明線性系統(tǒng)分組碼的特性。其主要參數(shù)如下:碼長:信息位:校驗位:,且最小距離:由于一個(n,k)的線性碼C是所有二進制n維向量組成的向量空間
3、的一個k維子空間,則可以找到k個線性獨立的碼字, ,使得C中的每個碼字v都是這k個碼字的一種線性組合。(7,4)漢明碼的生成矩陣如下,前三位為冗余校驗部分,后四位為消息部分。如果是待編碼的消息序列,則相應(yīng)的碼字可如下給出:編碼結(jié)構(gòu)即碼字,對于(7,4)線性分組碼漢明碼而言,為所提供的消息序列,而,。由以上關(guān)系可以得到(7,4)漢明碼的全部碼字如下所示: k=4,n=7的線性分組碼消息碼字消息碼字(0000)(0000000)(0001)(1010001)(1000)(1101000)(1001)(0111001)(0100)(0110100)(0101)(1100101)(1100)(1011
4、100)(1101)(0001101)(0010)(1110010)(0011)(0100011)(1010)(0011010)(1011)(1001011)(0110)(1000110)(0111)(0010111)(1110)(0101110)(1111)(1111111)2、用C+編寫(7,4)漢明碼編譯碼程序的思路如下:(1)編碼程序循環(huán)輸入待編碼消息序列,首先判斷輸入是否符合輸入條件:輸入必須是4位0,1序列,共有種情況。編碼程序如下:(本人水平有限,使用直接賦值的方法,望見笑)for(j=0;j<7;j+) if(j=3) vj= u0;if(j=4) vj= u1;if(j
5、=5) vj= u2;if(j=6) vj= u3;if(j=0)vj= (u0u2)u3);/異或運算if(j=1)vj= (u0u1)u2);/異或運算if(j=2)vj= (u1u2)u3);/異或運算cout << vj << " "cout<<endl;編碼的思想為:(2)譯碼程序:循環(huán)輸入待譯碼的碼字序列,第一步判斷輸入是否符合輸入條件:輸入必須是7位0,1序列,共有種情況。但是種情況中只有即16個有效碼字,那么第二步則是要判斷是否是即16個有效碼字,這也是編碼的一個檢錯方式,利用其奇偶校驗矩陣,校正子,接收到的碼字序列為,判
6、斷是否等于0。若等于0,則證明是有效碼字;若不等于0,則證明不屬于16個有效碼字的一個。l 奇偶校驗矩陣l 奇偶校驗矩陣以下為糾錯的關(guān)鍵程序:for(j=0;j<3;j+) a=(v0*ht0j)(v1*ht1j)(v2*ht2j)(v3*ht3j)(v4*ht4j)(v5*ht5j)(v6*ht6j); result=result+a; if(result!=0) cout<<"輸入的是無效的字碼"<<endl; goto loop; else cout<<"輸入字碼有效"<<endl; cout&
7、lt;<"您所輸入的待譯碼的碼字序列為:"接下來便是譯碼的兩個主要方法:第一個方法為查表法:程序中check_table()函數(shù)便是查表法。表格如下:k=4,n=7的線性分組碼消息碼字消息碼字(0000)(0000000)(0001)(1010001)(1000)(1101000)(1001)(0111001)(0100)(0110100)(0101)(1100101)(1100)(1011100)(1101)(0001101)(0010)(1110010)(0011)(0100011)(1010)(0011010)(1011)(1001011)(0110)(1000
8、110)(0111)(0010111)(1110)(0101110)(1111)(1111111)第二個方法編碼方法便是:系統(tǒng)碼直接取信息位譯碼程序如下:for(j=0;j<4;j+) if(j=0) uj= v3;if(j=1) uj= v4;if(j=2) uj= v5;if(j=3) uj= v6;cout << uj << " "3、程序附錄/(7,4)編譯碼程序#include <iostream>using namespace std;void check_table();/編碼程序int main() int g47=
9、1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,1,1,0,0,1,0,1,0,1,0,0,0,1;/聲明生成矩陣G,即4個線性獨立的碼字,可以使碼本C中的碼字v都是這k個碼字的一種線性組合,int h37=1,0,0,1,0,1,1,0,1,0,1,1,1,0,0,0,1,0,1,1,1;/聲明校驗矩陣H,int ht73=1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,1;/聲明校驗矩陣H的轉(zhuǎn)置矩陣HT(這里的T是H 的上標(biāo))int u4; /聲明待編碼的消息序列,即未編碼前的信息序列int v7; /聲明編碼后的碼字序列/int s7;int
10、i,j,k;/順序輸入待編碼4位信息序列l(wèi)able:cout<<"請輸入4位待編碼消息序列:"<<endl;for(i=0;i<4;i+)cin>>ui;/判斷是否輸入正確數(shù)據(jù)for(i=0;i<4;i+)if(u0=0|u0=1)&(u1=0|u1=1)&(u2=0|u2=1)&(u3=0|u3=1)cout<<"您所輸入的待編碼消息序列為:"for(i=0;i<4;i+)cout<<ui;cout<<endl;else cout<&
11、lt;"輸入錯誤!請輸入正確的二進制4位0,1信息序列!"<<endl;goto lable;cout<<endl;/輸出生成矩陣cout <<"(7,4)漢明碼的生成矩陣G為:"<<endl; for(i=0;i<4;i+)for(j=0;j<7;j+)cout <<gij<< " "cout << endl;cout << endl;/編碼程序/碼字的系統(tǒng)結(jié)構(gòu)分為冗余校驗部分和消息部分,結(jié)構(gòu)形式:v(x)=v0,v1,v2,
12、v3,v4,v5,v6/編碼序列中v3,v4,v5,v6均為所提供的消息序列,對于(7,4)漢明碼:/ v0=v3v5v6;/ v1=v3v4v5;/ v2=v4v5v6;cout<<" 等待編碼中 "<<endl;cout<<"編碼成功!編碼后的碼字序列為:"<<" "for(j=0;j<7;j+) if(j=3) vj= u0;if(j=4) vj= u1;if(j=5) vj= u2;if(j=6) vj= u3;if(j=0)vj= (u0u2)u3);/異或運算if(j=
13、1)vj= (u0u1)u2);/異或運算if(j=2)vj= (u1u2)u3);/異或運算cout << vj << " "cout<<endl;/順序輸入7位待譯碼有效碼字序列l(wèi)oop: int a,result=0; cout<<"請輸入7位待譯碼有效的消息序列:"<<endl;for(i=0;i<7;i+)cin>>vi;cout<<endl;for(i=0;i<7;i+)cout<<vi;/1.判斷是否輸入正確0,1序列 if(v0=0
14、|v0=1)&(v1=0|v1=1)&(v2=0|v2=1)&(v3=0|v3=1)&(v4=0|v4=1)&(v5=0|v5=1)&(v6=0|v6=1) cout<<"輸入字碼合法"<<endl; else cout<<"輸入錯誤!請輸入正確的二進制7位0,1碼字序列!"<<endl;goto loop;/2.判斷是否為有效碼字 for(j=0;j<3;j+) a=(v0*ht0j)(v1*ht1j)(v2*ht2j)(v3*ht3j)(v4*ht4
15、j)(v5*ht5j)(v6*ht6j); result=result+a; if(result!=0) cout<<"輸入的是無效的字碼"<<endl; goto loop; else cout<<"輸入字碼有效"<<endl; cout<<"您所輸入的待譯碼的碼字序列為:" for(i=0;i<7;i+) cout<<vi; cout<<endl; /輸出校驗矩陣Hcout <<"(7,4)漢明碼的校驗矩陣H為:&quo
16、t;<<endl; for(i=0;i<3;i+)for(j=0;j<7;j+)cout <<hij<< " "cout << endl;cout << endl;/輸出校驗矩陣HT(這里的T為H 的上標(biāo),代表轉(zhuǎn)置),目的是為了利用校正子進行編碼檢測s=r*HT;cout <<"(7,4)漢明碼的校驗矩陣H的轉(zhuǎn)置矩陣為:"<<endl; for(i=0;i<7;i+)for(j=0;j<3;j+)cout <<htij<<
17、" "cout << endl;cout << endl;/檢錯算法check_table();/查表法cout<<"譯碼方法二:系統(tǒng)碼直接取信息位譯碼 "<<endl;cout<<" 等待譯碼中 "<<endl;cout<<"譯碼成功!譯碼后的消息序列為:"<<" "for(j=0;j<4;j+) if(j=0) uj= v3;if(j=1) uj= v4;if(j=2) uj= v5;if(
18、j=3) uj= v6;cout << uj << " "cout<<endl;system("pause"); return 0;/查表法函數(shù)void check_table()cout<<"譯碼方法一:查表法"<<endl;cout<<" k=4,n=7的線性分組碼的全部碼字 "<<endl;cout<<" 消息 碼字 | 消息 碼字"<<endl;cout<<"(0000) (0000000) | (0001) (1010001)"<<endl;cout<<"(1000) (1101000) | (1001) (0111001)"<<endl;cout<<"(0100) (0110100) | (0101) (1100101)"<<endl;cout<<"(1100) (1011100) | (1101) (0001101)"<<endl;cout<&
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度租賃合同終止與租賃物處理及收益分配協(xié)議3篇
- 二零二五年度城市綜合體衛(wèi)生間清潔及品牌形象塑造協(xié)議2篇
- 西安理工大學(xué)高科學(xué)院《影視音樂基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024汽車烤漆房租賃合同及環(huán)保設(shè)施租賃與維護協(xié)議3篇
- 2025年度智慧城市基礎(chǔ)設(shè)施建設(shè)合同6篇
- 2024版新能源發(fā)電項目投資與建設(shè)合同
- 二零二五年度板材研發(fā)與生產(chǎn)技術(shù)轉(zhuǎn)移合同2篇
- 二零二五年度大理石礦山開采與環(huán)保治理綜合服務(wù)合同3篇
- 二零二五年物聯(lián)網(wǎng)設(shè)備集成技術(shù)服務(wù)協(xié)議
- 天津外國語大學(xué)濱海外事學(xué)院《物理化學(xué)實驗Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 細胞庫建設(shè)與標(biāo)準(zhǔn)制定-洞察分析
- 2024年國家公務(wù)員錄用考試公共基礎(chǔ)知識復(fù)習(xí)題庫2500題及答案
- DB3309T 98-2023 登步黃金瓜生產(chǎn)技術(shù)規(guī)程
- DBJ41-T 108-2011 鋼絲網(wǎng)架水泥膨脹珍珠巖夾芯板隔墻應(yīng)用技術(shù)規(guī)程
- 2025年學(xué)長引領(lǐng)的讀書會定期活動合同
- 表內(nèi)乘除法口算l練習(xí)題1200道a4打印
- 《EICC培訓(xùn)講義》課件
- 2025年四川省政府直屬事業(yè)單位招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024年物業(yè)公司服務(wù)質(zhì)量保證合同條款
- 文言文閱讀之理解實詞含義(講義)-2025年中考語文專項復(fù)習(xí)
- 豪邁CutRite V9板材優(yōu)化軟件學(xué)習(xí)教材
評論
0/150
提交評論