資源描述:
《《信息論基礎(chǔ)》實(shí)驗(yàn)指導(dǎo)書new》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、目錄實(shí)驗(yàn)一英文半字節(jié)壓縮編碼技術(shù)1實(shí)驗(yàn)二Huffman編碼5實(shí)驗(yàn)三重復(fù)碼編譯碼方法1113實(shí)驗(yàn)一英文半字節(jié)壓縮編碼技術(shù)一、實(shí)驗(yàn)?zāi)康?、理解信源編碼的作用和目的,掌握數(shù)據(jù)壓縮的基本思想;2、掌握數(shù)據(jù)壓縮中常用的比特流操作辦法;3、掌握英文半字節(jié)壓縮編碼技術(shù)。二、實(shí)驗(yàn)內(nèi)容通過C語言編程,實(shí)現(xiàn)對一般英文文本文件的半字節(jié)壓縮編碼與譯碼程序,并觀察編碼、譯碼結(jié)果以及壓縮效果。三、實(shí)驗(yàn)原理對于一個通信系統(tǒng)來說,信息傳輸?shù)挠行?、可靠性、安全性和認(rèn)證性是人們的主要目標(biāo)。其中,信息傳輸?shù)挠行灾傅氖潜M可能的使用較短的時間
2、和較少的設(shè)備等資源來傳送盡可能多的信息,而這一目的主要是通過信源編碼這個環(huán)節(jié)來實(shí)現(xiàn)的。雖然有許許多多不同的信源編碼方法,但總的說來,信源編碼主要是通過減少或消除信源的剩余度來提高傳輸效率的。而且,有時人們?yōu)榱俗非蟾叩膫鬏斝?,在滿足實(shí)際需求的情況下,還允許在編譯碼過程中存在一定程度的失真,這就是所謂的有損壓縮。當(dāng)然,針對不同的應(yīng)用要求,可以選擇不同的壓縮編碼辦法,為了方便理解和實(shí)現(xiàn),針對一般的英文文本,可以設(shè)計一種半字節(jié)壓縮編碼方法來實(shí)現(xiàn)數(shù)據(jù)的壓縮。(一)有損處理在一般英文文本中,除了大、小寫英文字母外
3、,還有多種不同的標(biāo)點(diǎn)符號。為了達(dá)到在不影響文章大意的前提下,盡可能的減少需編碼的符號數(shù),以提高信息傳輸效率的目的,可采取這樣的處理方法:1)所有的英文字母不區(qū)分大、小寫(如:將所有的大寫英文字母變成小寫字母);2)保留標(biāo)點(diǎn)符號:“,”、“?!?、“?”“:”和“”;131)將“!”和“;”變?yōu)椤啊!保渌柸孔兂伞啊?。這樣,原來的英文文本就變成了一個新的文本,該文本全部由26個英文字母和“,”、“?!薄ⅰ??”、“:”以及“”這31種符號組成,而且,文章的大意并沒有發(fā)生大的變化。可以認(rèn)為這種失真是在允許的
4、失真范圍之內(nèi)的。當(dāng)然,為了簡化操作,上面的第一步也可省略。雖然這樣會使輸出文件中既有大寫字符,又有小寫字符,但只需在后面的編碼操作時將大、小寫等同處理,則同樣達(dá)到了不區(qū)分大小寫的目的。(二)數(shù)據(jù)壓縮在計算機(jī)中,文本文件中的每個符號都是由8位的ASCII碼所構(gòu)成,共有256種取值的可能。既然經(jīng)過上述有損處理后文件中只存在31種不同的符號,所以在壓縮編碼過程中只需對31種符號進(jìn)行編碼,就可以大大壓縮文本文件的數(shù)據(jù)量??紤]到各字母以及符號出現(xiàn)的概率,并考慮碼字的可分離性,可以采取以下的編碼方法來進(jìn)行數(shù)據(jù)的壓縮:
5、1)對于概率最大的15個符號分別編以“0000”~“1110”的碼字:符號碼字符號碼字符號碼字符號碼字空格0000e0100l1000s1100a0001f0101n1001t1101c0010h0110o1010u1110d0011i0111r10112)對于其余的16個符號分別編以“11110000”~“11111111”的碼字。符號碼字符號碼字符號碼字符號碼字,11110000b11110100m11111000w11111100.11110001g11110101p11111001x1111110
6、1?11110010j11110110q11111010y11111110:11110011k11110111v11111011z11111111這樣,一些最經(jīng)常出現(xiàn)的符號從原來的8bit變?yōu)?bit,達(dá)到了數(shù)據(jù)壓縮的目的。從表中可以看出,后16個符號的碼字中前4比特均為“1111”,因此可先向編碼文件輸出前134比特,然后再輸出后4比特。這樣的好處是:不論是前15種符號還是后16種符號,都可執(zhí)行同一種輸出操作(輸出4比特),只是對于后16種符號是連續(xù)執(zhí)行兩次而已。(三)譯碼譯碼過程是編碼的逆過程,解碼后
7、得到由這31種符號所組成的文本文件。由于后16個符號的碼字中前4比特均為“1111”,因此可設(shè)計譯碼過程為:每次讀取4bit。若不為“1111”,則根據(jù)此次讀取的4bit譯為相應(yīng)的前15個符號之一;若為“1111”,則再次讀取4bit,并根據(jù)后4bit譯為相應(yīng)的后16個符號之一。這樣,不論是前15種符號還是后16種符號的譯碼,都可執(zhí)行同一種讀取操作(讀取4比特),只是對于后16種符號是連續(xù)執(zhí)行兩次而已。(四)半字節(jié)操作在計算機(jī)中,所有對數(shù)據(jù)的操作(不論是數(shù)據(jù)的存儲還是對文件的讀寫)都是以字節(jié)(8bit)為
8、基本單位的,而我們的編碼與解碼都是以半個字節(jié)(4bti)為單位的,因此需要運(yùn)用位操作來進(jìn)行數(shù)據(jù)的控制:1)編碼過程中,執(zhí)行的操作是每次輸出4比特。由于每次向輸出文件的寫入是以字節(jié)(8bit)為單位的,因此可定義一個緩存變量來存儲每次輸出的4比特數(shù)據(jù)。只有當(dāng)緩存中的有效數(shù)據(jù)湊足8bit(1字節(jié))時才執(zhí)行一次向輸出文件的寫入操作。這里需要注意的是,如果待編碼文件中所有符號的碼長之和不是8的整數(shù)倍時,就會出現(xiàn)緩存中剩余4比特有效數(shù)據(jù)