




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、前 言信息論是現(xiàn)代通信與信息工程的理論基礎(chǔ)。作為電子信息科學(xué)與技術(shù)專業(yè)本科生的學(xué)科基礎(chǔ)課,本課程主要講授:信息的定義和測度、信源和信息熵、連續(xù)熵和信息變差、信道和互信息、平均互信息和信道容量、數(shù)據(jù)處理和信息測量理論、無失真信源編碼理論和編碼方法等內(nèi)容。本課程按“單符號離散信息系統(tǒng)”、“多符號離散信息系統(tǒng)”、“連續(xù)信息系統(tǒng)”三個(gè)“系統(tǒng)”層面,逐步深入展開,以嚴(yán)密的數(shù)學(xué)分析貫串始終。通過教學(xué),使學(xué)生掌握信息理論的基本概念和信息分析方法,為今后進(jìn)一步研究信息科學(xué)和信息技術(shù)打下堅(jiān)實(shí)的理論基礎(chǔ)。實(shí)驗(yàn)一:唯一可譯碼判斷實(shí)驗(yàn)學(xué)時(shí):3實(shí)驗(yàn)類型:(演示、驗(yàn)證、綜合、設(shè)計(jì)、研究)實(shí)驗(yàn)要求:(必修、選修)一、實(shí)驗(yàn)?zāi)?/p>
2、的通過本次試驗(yàn)了解唯一可譯碼地判斷原理;實(shí)現(xiàn)用c語言編寫判斷唯一可譯碼地程序二、實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn)唯一可譯碼的判決準(zhǔn)則sardinaspatterson算法三、實(shí)驗(yàn)原理、方法和手段sardinaspatterson算法描述: 設(shè)c為碼字集合,按以下步驟構(gòu)造此碼的尾隨后綴集合f: (1) 考查c中所有的碼字,若wi是wj的前綴,則將相應(yīng)的后綴作為一個(gè)尾隨后綴放入集合f0中; (2) 考查c和fi兩個(gè)集合,若wjc是wifi的前綴或wifi 是wjc的前綴,則將相應(yīng)的后綴作為尾隨后綴碼放入集合fi+1中; (3)f=fi即為碼c的尾隨后綴集合; (4) 若f中出現(xiàn)了c中的元素,則算法終止,返回假(c
3、不是唯一可譯碼);否則若f中沒有出現(xiàn)新的元素,則返回真。在我們設(shè)計(jì)的算法中,需要注意的是我們需要的是先輸出所有尾隨后綴的集合,然后再判斷該碼是否是唯一可譯碼,即如f中出現(xiàn)了c中的元素,則c不是唯一可譯碼,否則若f中沒有出現(xiàn)新的元素,則c為唯一可譯碼。而不是f中出現(xiàn)c中的元素就終止,這也是在本題的要求中需要注意的問題。1、 概要設(shè)計(jì):由于需要判斷尾隨后綴,所以我們需要反復(fù)的比較c和f中的碼字。1) 首先我們用一個(gè)b3030的數(shù)組來存放所有的尾隨后綴的集合;用q記錄所有尾隨后綴的個(gè)數(shù);2) 用數(shù)組a3030來存放輸入的碼字,l30來存放碼字的長度;通過一個(gè)雙重循環(huán)并調(diào)用houzhui(ai,aj,
4、li,lj)函數(shù)來找到a3030中的為隨后綴,即:for(i=0;in-1;i+) for(j=0;jn;j+) if(i!=j&lilj) huozhui(ai,aj,li,lj); 3) 通過判斷q是否大于0,如果不大于0,即b3030中沒有碼字,也就是不存在尾隨后綴,那么可判斷a3030是唯一可譯碼,否則進(jìn)行如下操作;4) 計(jì)算b3030中尾隨后綴的長度,用k1表示;并調(diào)用huozhui(bi,aj,k1,lj)其中k1lj來a3030中所存在的后綴,并加入到b3030中,通過一個(gè)循環(huán),找到a3030中所有尾隨后綴;即 for(i=0;iq;i+) k1=strlen(bi); for(
5、j=0;jn;j+) if(k1lj;通過循環(huán)調(diào)用即可找到b3030中的所有尾隨后綴,最后再將他們分別存放在b3030中;即通過 for(i=0;in;i+) for(j=0;jli) huozhui(ai,bj,li,k2); 6) 在反復(fù)調(diào)用huozhui(ai,aj,li,lj)函數(shù)中如果b3030中有重復(fù)出現(xiàn)的,即尾隨后綴相同的不用再次放入b3030中。7) 在調(diào)用函數(shù)中所需要注意的問題就是一個(gè)比較的問題,也就是實(shí)現(xiàn)6)中所提到的。四,實(shí)驗(yàn)數(shù)據(jù)源1: 10,0.1002: 10,110,1110五、實(shí)驗(yàn)組織運(yùn)行要求以學(xué)生自主訓(xùn)練為主的開放模式組織教學(xué)六、實(shí)驗(yàn)條件1. 計(jì)算機(jī)2. win
6、dows xp3. vc+ 6.0七、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)源程序#include #include #include struct strings char *string; struct strings *next;struct strings fstr, *fh, *fp;/輸出當(dāng)前集合void outputstr(strings *str)docoutstringnext;while(str);coutb?b:a; inline int max(int a, int b) return ab?a:b; #define length_a (strlen(cp)#define length_b (s
7、trlen(tempptr)/判斷一個(gè)碼是否在一個(gè)碼集合中,在則返回0,不在返回1int comparing(strings *st_string,char *code)while(st_string-next)st_string=st_string-next;if(!strcmp(st_string-string,code)return 0;return 1;/判斷兩個(gè)碼字是否一個(gè)是另一個(gè)的前綴,如果是則生成后綴碼void houzhui(char *cp,char *tempptr)if (!strcmp(cp,tempptr)cout集合c和集合f中有相同碼字:endlcpendl不是唯
8、一可譯碼碼組!next=null;cp_temp-string=new charabs(length_a-length_b)+1; char *longstr;longstr=(length_alength_b ? cp : tempptr);/將長度長的碼賦給longstr/取出后綴for (int k=min(length_a,length_b); kstringk - min(length_a,length_b)=longstrk;cp_temp-stringabs(length_a-length_b)=null;/判斷新生成的后綴碼是否已在集合f里,不在則加入f集合if(compari
9、ng(fh,cp_temp-string)fp-next=cp_temp;fp=fp-next;void main()/功能提示和程序初始化準(zhǔn)備couttt唯一可譯碼的判斷!nstring=new charstrlen(c); strcpy(ch-string, c); ch-next=null; char f=f :; fh-string=new charstrlen(f); strcpy(fh-string, f); fh-next=null;/輸入待檢測碼的個(gè)數(shù)int cnum;coutcnum;cout輸入待檢測碼endl;for(int i=0; icnum; i+) couti+1
10、tempstr; cp-next=new (struct strings);cp=cp-next;cp-string=new charstrlen(tempstr) ;strcpy(cp-string, tempstr);cp-next = null; outputstr(ch); cp=ch; while(cp-next-next) cp=cp-next;tempptr=cp;dotempptr=tempptr-next;houzhui(cp-string,tempptr-string);while(tempptr-next); outputstr(fh);struct strings *f
11、begin,*fend; fend=fh; while(1) if(fend = fp)cout是唯一可譯碼碼組!next) cp=cp-next;tempptr=fbegin;for(;)tempptr=tempptr-next;houzhui(cp-string,tempptr-string);if(tempptr = fend)break;outputstr(fh);/輸出f集合中全部元素 流程框圖數(shù)據(jù)測試()輸入10,0,100(2)輸入10,110,1110八,實(shí)驗(yàn)心得1.更深入理解了唯一可譯碼地判斷原則2.學(xué)會了用sardinaspatterson算法實(shí)現(xiàn)編碼判斷3.掌握用c編程實(shí)
12、現(xiàn)唯一可譯碼判斷實(shí)驗(yàn)二: huffman編碼的實(shí)現(xiàn)實(shí)驗(yàn)學(xué)時(shí):3實(shí)驗(yàn)類型:(演示、驗(yàn)證、綜合、設(shè)計(jì)、研究)實(shí)驗(yàn)要求:(必修、選修)一、 實(shí)驗(yàn)?zāi)康睦斫夂驼莆説uffman編碼的基本原理和方法,實(shí)現(xiàn)對信源符號的huffman編碼。二、 實(shí)驗(yàn)內(nèi)容1. 理解和掌握huffman編碼的基本原理和方法2. 通過matlab編程實(shí)現(xiàn)對單信源符號的huffma編碼3. 計(jì)算信源的信息熵、平均碼長以及編碼效率三、 實(shí)驗(yàn)原理1 huffman編碼按信源符號出現(xiàn)的概率而編碼,其平均碼長最短,所以是最優(yōu)碼。2 無失真信源編碼定理:對于熵為h(x)的離散無記憶的平穩(wěn)信源,必存在一種無失真編碼,使每符號的平均碼長滿足不等式
13、:3 二元huffman編碼:若將編碼設(shè)計(jì)為長度不等的二進(jìn)制編碼,即讓待傳字符串中出現(xiàn)概率大的字符采用盡可能短的碼字,而把長的碼字分配給概率小的信源符號。構(gòu)造方法如下:(a) 將信源概率分布按大小以遞減次序排列;合并兩概率最小者,得到新信源;并分配0/1符號。(b) 新信源若包含兩個(gè)以上符號返回(a),否則到(c)。(c) 從最后一級向前按順序?qū)懗雒啃旁捶査鶎?yīng)的碼字。4huffman編碼算法procedure huffman(si ,pi ) if q=2then return s0 0, s1 1else 降序排序pi縮減信源:創(chuàng)建一個(gè)符號s以取代sq-2 ,sq -1 ,其概率為p=p
14、q-2+ pq-1 遞歸調(diào)用huffman算法以得到s0 ,sq-3 ,s的編碼:w0 ,wq-3 ,w,相應(yīng)的概率分布為p0 ,pq -3 ,p returns 0 w0,sq-3 wq-3 ,sq-2 w0,sq-1 w1 end ifend procedure四、 實(shí)驗(yàn)數(shù)據(jù)源1 2 五、實(shí)驗(yàn)組織運(yùn)行要求以學(xué)生自主訓(xùn)練為主的開放模式組織教學(xué)六、實(shí)驗(yàn)條件4. 計(jì)算機(jī)5. windows 6. vc+ 6.0七、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)源程序#include #define maxbit 100#define maxvalue 10000#define maxleaf 30#define maxnode
15、maxleaf*2 -1typedef struct int bitmaxbit; int start; hcodetype; /* 編碼結(jié)構(gòu)體 */typedef struct int weight; int parent; int lchild; int rchild; hnodetype; /* 結(jié)點(diǎn)結(jié)構(gòu)體 */* 構(gòu)造一顆哈夫曼樹 */void huffmantree (hnodetype huffnodemaxnode, int n) /* i、j: 循環(huán)變量,m1、m2:構(gòu)造哈夫曼樹不同過程中兩個(gè)最小權(quán)值結(jié)點(diǎn)的權(quán)值, x1、x2:構(gòu)造哈夫曼樹不同過程中兩個(gè)最小權(quán)值結(jié)點(diǎn)在數(shù)組中的序號
16、。*/ int i, j, m1, m2, x1, x2; /* 初始化存放哈夫曼樹數(shù)組 huffnode 中的結(jié)點(diǎn) */ for (i=0; i2*n-1; i+) huffnodei.weight = 0; huffnodei.parent =-1; huffnodei.lchild =-1; huffnodei.lchild =-1; /* end for */ /* 輸入 n 個(gè)葉子結(jié)點(diǎn)的權(quán)值 */ for (i=0; in; i+) printf (please input weight of leaf node %d: n, i); scanf (%d, &huffnodei.we
17、ight); /* end for */ /* 循環(huán)構(gòu)造 huffman 樹 */ for (i=0; in-1; i+) m1=m2=maxvalue; /* m1、m2中存放兩個(gè)無父結(jié)點(diǎn)且結(jié)點(diǎn)權(quán)值最小的兩個(gè)結(jié)點(diǎn) */ x1=x2=0; /* 找出所有結(jié)點(diǎn)中權(quán)值最小、無父結(jié)點(diǎn)的兩個(gè)結(jié)點(diǎn),并合并之為一顆二叉樹 */ for (j=0; jn+i; j+) if (huffnodej.weight m1 & huffnodej.parent=-1) m2=m1; x2=x1; m1=huffnodej.weight; x1=j; else if (huffnodej.weight m2 & hu
18、ffnodej.parent=-1) m2=huffnodej.weight; x2=j; /* end for */ /* 設(shè)置找到的兩個(gè)子結(jié)點(diǎn) x1、x2 的父結(jié)點(diǎn)信息 */ huffnodex1.parent = n+i; huffnodex2.parent = n+i; huffnoden+i.weight = huffnodex1.weight + huffnodex2.weight; huffnoden+i.lchild = x1; huffnoden+i.rchild = x2; printf (x1.weight and x2.weight in round %d: %d, %
19、dn, i+1, huffnodex1.weight, huffnodex2.weight); /* 用于測試 */ printf (n); /* end for */ /* end huffmantree */int main(void) hnodetype huffnodemaxnode; /* 定義一個(gè)結(jié)點(diǎn)結(jié)構(gòu)體數(shù)組 */ hcodetype huffcodemaxleaf, cd; /* 定義一個(gè)編碼結(jié)構(gòu)體數(shù)組, 同時(shí)定義一個(gè)臨時(shí)變量來存放求解編碼時(shí)的信息 */ int i, j, c, p, n; printf (please input n:n); scanf (%d, &n); huffmantree
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國生鮮商超行業(yè)市場前景趨勢及競爭格局與投資研究報(bào)告
- 2025-2030中國球衣市場銷售模式及前景趨勢預(yù)測分析研究報(bào)告
- 青少年視角下的九·一八事變心得體會
- 2025-2030中國燒烤調(diào)料行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 簡版股權(quán)轉(zhuǎn)讓協(xié)議
- 企業(yè)社會責(zé)任活動策劃方案
- 2025年統(tǒng)計(jì)學(xué)期末考試題庫:統(tǒng)計(jì)調(diào)查誤差控制實(shí)驗(yàn)報(bào)告撰寫試題
- 2025年無人機(jī)駕駛員職業(yè)技能考核試卷(無人機(jī)飛行器操作規(guī)程與標(biāo)準(zhǔn))
- 基于MFCC和深度學(xué)習(xí)的肺音分類方法研究
- 2025年小學(xué)語文畢業(yè)升學(xué)考試全真模擬卷:口語表達(dá)技能訓(xùn)練與模擬考試試題
- 遼寧協(xié)作校2024-2025學(xué)年度下學(xué)期高三第二次模擬考試語文試卷(含答案解析)
- 2025-2030汽車揚(yáng)聲器市場發(fā)展現(xiàn)狀分析及行業(yè)投資戰(zhàn)略研究報(bào)告
- 期中考試考后分析總結(jié)主題班會《全員出動尋找消失的分?jǐn)?shù)》
- 2025年廣東省廣州市廣大附中等校聯(lián)考中考語文模擬試卷(4月份)
- 成都樹德中學(xué)2025年高三第四次聯(lián)考物理試題文試卷
- 民法典課程大綱
- 2025-2030中國數(shù)據(jù)安全服務(wù)行業(yè)市場深度分析及前景趨勢與投資研究報(bào)告
- 醫(yī)療AI輔助康復(fù)管理
- 山東省天一大聯(lián)考·齊魯名校教研體2024-2025學(xué)年(下)高三年級第六次聯(lián)考(物理試題及答案)
- 房地產(chǎn)市場報(bào)告 -2025年第一季度青島寫字樓和零售物業(yè)市場概況報(bào)告
- 2025年03月人力資源社會保障部所屬單位筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
評論
0/150
提交評論