




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、云南大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)實(shí)驗(yàn)教學(xué)中心實(shí)驗(yàn)報(bào)告課程名稱:計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)學(xué)期:2012-2013學(xué)年第二學(xué)期成績:指導(dǎo)教師: 陸正福學(xué)生姓名:盧富毓 學(xué)生學(xué)號:20101910072實(shí)驗(yàn)名稱:Hamming碼實(shí)驗(yàn)實(shí)驗(yàn)要求: 必做實(shí)驗(yàn)學(xué)時(shí):4學(xué)時(shí)實(shí)驗(yàn)編號: No.9實(shí)驗(yàn)日期:2013/5/28完成日期:2013/6/3學(xué)院:數(shù)學(xué)與統(tǒng)計(jì)學(xué)院專業(yè) : 信息與計(jì)算科學(xué)年級: 2010級 一、實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn)掌握Hamming碼編碼實(shí)驗(yàn)的構(gòu)造算法,以及其重要思想。二、實(shí)驗(yàn)內(nèi)容: Hamming碼編碼實(shí)驗(yàn)1.熟悉Hamming碼的設(shè)計(jì)原理;2.編程實(shí)現(xiàn)(15,11,3)Hamming的編碼和譯碼算法;3.驗(yàn)證H
2、amming碼的檢錯能力和糾錯能力三、實(shí)驗(yàn)環(huán)境Win7、Eclipse四、實(shí)驗(yàn)過程(請學(xué)生認(rèn)真填寫):實(shí)驗(yàn)過程、結(jié)果以及相應(yīng)的解釋:1. 預(yù)備知識A、 與其他的錯誤校驗(yàn)碼類似,漢明碼也利用了奇偶校驗(yàn)位的概念,通過在數(shù)據(jù)位后面增加一些比特,可以驗(yàn)證數(shù)據(jù)的有效性。利用一個(gè)以上的校驗(yàn)位,漢明碼不僅可以驗(yàn)證數(shù)據(jù)是否有效,還能在數(shù)據(jù)出錯的情況下指明錯誤位置。B、 Hamming碼中主要的是生成矩陣以及校驗(yàn)矩陣。通過得到這二者,我們就可以對需要的字符串進(jìn)行編碼、檢錯、糾錯、譯碼的工作了。C、 具體如下:2. 實(shí)驗(yàn)過程A、 原理分析:這里主要對如何糾錯進(jìn)行簡要分析:編碼所對應(yīng)的碼字為C = 0110011。
3、若接收到R = 0110001 。有H*x=0可以判斷其存在錯誤。Erro=1 1 0。用Erro中的元素與校驗(yàn)矩陣中的每一列表,與其中一列全部相同。則帶便這一列有錯。找到第六位有錯。異或運(yùn)算后得到R = 0110011。當(dāng)然這里需要注意的是Hamming 碼只能糾正一位錯誤。當(dāng)出現(xiàn)兩位錯誤時(shí),將無法糾錯后得到正確結(jié)果。好了,廢話不多說了。先把代碼貼上來。B、 具體代碼如下: /* HammingCode的實(shí)驗(yàn) * *1.熟悉Hamming碼的設(shè)計(jì)原理; *2.編程實(shí)現(xiàn)(15,11,3)Hamming的編碼和譯碼算法; *3.驗(yàn)證Hamming碼的檢錯能力和糾錯能力。 */package Ha
4、mmingCode;import java.util.Scanner;/* * author 盧富毓 * see 實(shí)現(xiàn)HammingCode的生成、檢錯、糾錯 * */public class HammingCode int H;int G;/* * param start * () Hamming碼的具體實(shí)現(xiàn) * param HMC * 類的實(shí)例 */public void start(HammingCode HMC) int send = new int11;int receive = new int15;/ step1 15,11Hamming 碼的校驗(yàn)矩陣生成H = HMC.Creat
5、eCheckArray();/ step1 15,11Hamming 碼的生成矩陣生成G = HMC.GenerateArray();/ 輸入四個(gè)字符進(jìn)行編碼System.out.print("請輸入需編碼的字符(0、1)11個(gè):");Scanner sc = new Scanner(System.in);for (int i = 0; i < 11; i+) sendi = sc.nextInt();sc.reset();HMC.encode(G, send); / 編碼System.out.println("n-");/ 輸入四個(gè)字符檢測編碼S
6、ystem.out.print("請輸入需譯碼字符(0、1)15個(gè):");for (int i = 0; i < 15; i+) receivei = sc.nextInt();HMC.checkAndDecode(H, receive);/ 檢錯以及譯碼/ sc.close();/* * param ToBinary * 校驗(yàn)矩陣 十進(jìn)制數(shù)轉(zhuǎn)為二進(jìn)制矩陣 * return 返回校驗(yàn)矩陣 */public int CreateCheckArray() / 二進(jìn)制 校驗(yàn)矩陣int m = 1;int l = 1;int b = new int416;for (int i
7、 = 0; i < b.length; i+) for (int j = 1; j < bi.length; j+) bij = 0;for (int i = 1; i < 16; i+) / 二進(jìn)制m = i;if (i != 1 && i != 2 && i != 4 && i != 8) for (int j = 3; j >= 0; j-) bjl = m % 2;m = m / 2;if (m < 0) break;l+;for (int j = 0; j < 4; j+) / 二進(jìn)制for (int
8、 i = 12; i < 16; i+) if (i - 12 = j) bji = 1;System.out.println("(15,11)HammingCode校驗(yàn)矩陣生成:");System.out.println("-");for (int i = 0; i < 4; i+) for (int j = 1; j < 16; j+) System.out.print(bij + " ");System.out.println();System.out.println("-");return
9、 b;/* * param Generate * 生成矩陣 十進(jìn)制數(shù)轉(zhuǎn)為二進(jìn)制矩陣 * return */public int GenerateArray() / 生成矩陣 增加還沒有做int g = new int412;int l = 1;int m = 1;for (int i = 1; i < 16; i+) / 二進(jìn)制m = i;if (i != 1 && i != 2 && i != 4 && i != 8) for (int j = 3; j >= 0; j-) gjl = m % 2;m = m / 2;if (m &
10、lt; 0) break;l+;/ G 生成int G = new int1115;for (int i = 0; i < G.length; i+) for (int j = 0; j < Gi.length; j+) if (j = i) Gij = 1; else Gij = 0;for (int j = 11; j < 15; j+) for (int i = 0; i < G.length; i+) Gij = gj - 11i + 1;System.out.println("(15,11)HammingCode生成矩陣:");System
11、.out.println("-");for (int i = 0; i < 11; i+) for (int j = 0; j < 15; j+) System.out.print(Gij + " ");System.out.println();System.out.println("-");return G;/* * param encode * 用生成矩陣編碼 * param G * 代表生成矩陣 * param send * 輸入的字符諸位 1、0 等 * return */public int encode(int
12、 G, int send) / 利用生成矩陣 編碼int newArray = new intG1.length; / 得到X*G的一個(gè)矩陣for (int i = 0; i < newArray.length; i+) newArrayi = 0;for (int j = 0; j < G.length; j+)newArrayi += sendj * Gji;if (newArrayi & 1) = 1) newArrayi = 1; else newArrayi = 0;System.out.print("(15,11)HammingCode的編碼:&quo
13、t;);for (int i = 0; i < newArray.length; i+) System.out.print(newArrayi + " ");return newArray;/* * * param H * 校驗(yàn)矩陣錯誤 * param receive * 收到的信息 * return 返回海明碼的譯碼 */public int checkAndDecode(int H, int receive) / 檢測錯誤以及糾正錯誤int e = new intH.length; / H*x得到int flag = 0;for (int i = 0; i <
14、; e.length; i+) / 得到Hx的一個(gè)矩陣ei = 0;for (int j = 0; j < receive.length; j+) ei = ei (receivej & Hij + 1);/ 檢測編碼是否有錯 H*x=0System.out.print("H*x為:");for (int i = 0; i < e.length; i+) System.out.print(ei + " ");System.out.println();for (int i = 0; i < e.length; i+) if (ei
15、 != 0) flag = -1;break;if (flag = -1) / 代表有錯 flag 得到位錯的下標(biāo)flag = 0;int k = 0;for (int i = e.length - 1; i >= 0; i-) flag += Math.pow(2, i) * ek;k+;System.out.print("接收的數(shù)據(jù)第" + flag + "位有錯:");for (int i = 0; i < receive.length; i+) System.out.print(receivei);System.out.println
16、();/ 進(jìn)行糾錯flag = flag - 1;receiveflag = receiveflag 1;System.out.print("接收的數(shù)據(jù)糾錯后:");for (int i = 0; i < receive.length; i+) System.out.print(receivei); else / System.out.println();System.out.print("接收正確,數(shù)據(jù)為:");for (int i = 0; i < receive.length; i+) System.out.print(receivei
17、);System.out.println();System.out.print("(15,11)HammingCode譯碼為:");for (int i = 0; i < 11; i+) System.out.print(receivei + " ");System.out.println();return e;public static void main(String args) HammingCode HMC = new HammingCode();HMC.start(HMC);結(jié)果如下:校驗(yàn)矩陣和生成矩陣結(jié)果如圖:當(dāng)輸入正確與接收相同時(shí)結(jié)果如圖:當(dāng)收到結(jié)果有錯的時(shí)候(其中錯誤為非校驗(yàn)位)結(jié)果如圖:當(dāng)收到結(jié)果有錯的時(shí)候(其中錯誤為校驗(yàn)位)結(jié)果如圖:/進(jìn)過三種不同的形式的檢驗(yàn),得到編寫的15,11,3海明碼的算法正確。五、實(shí)驗(yàn)總結(jié)1遇到的問題及分析:遇到問題:首先還是在矩
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB43-T 3117-2024 政務(wù)公開工作規(guī)范
- 光伏發(fā)電站設(shè)計(jì)標(biāo)準(zhǔn)規(guī)范
- (高清版)DB54∕T 0461-2025 斯布牦牛養(yǎng)殖技術(shù)規(guī)程
- 鞍山輔警考試題庫
- 保育員實(shí)操考試練習(xí)題及答案
- 鼻咽平滑肌瘤的并發(fā)癥管理
- 河北省承德市高新區(qū)第一中學(xué)2024-2025學(xué)年高一下學(xué)期期中考試數(shù)學(xué)試卷(含解析)
- 小學(xué)自律、誠信活動方案
- 尖兵訓(xùn)練活動方案
- 工廠六一活動方案
- 企業(yè)碳排放管理制度
- ODM合同范本模板
- 【初中科學(xué)】土壤與植物生長教學(xué)設(shè)計(jì) 2024-2025學(xué)年浙教版七年級下冊科學(xué)
- 山東省濰坊市2024-2025學(xué)年高二上學(xué)期期末考試歷史試題(原卷版+解析版)
- 《醫(yī)療機(jī)構(gòu)重大事故隱患判定清單(試行)》知識培訓(xùn)
- 人工智能輔助科研數(shù)據(jù)挖掘與分析
- 2024年秋七年級上冊英語單詞表
- 河南省鄭州市管城回族區(qū)2024-2025學(xué)年數(shù)學(xué)五年級第二學(xué)期期末聯(lián)考試題含答案
- 2025年湖南網(wǎng)絡(luò)工程職業(yè)學(xué)院單招職業(yè)技能測試題庫含答案
- SEAtech 石油石化ICS網(wǎng)絡(luò)安全解決方案
- 班級管理中的法治教育實(shí)踐
評論
0/150
提交評論