![信息論實驗報告_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/20/41b9a448-39f3-43af-94de-4152d5ee9a8c/41b9a448-39f3-43af-94de-4152d5ee9a8c1.gif)
![信息論實驗報告_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/20/41b9a448-39f3-43af-94de-4152d5ee9a8c/41b9a448-39f3-43af-94de-4152d5ee9a8c2.gif)
![信息論實驗報告_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/20/41b9a448-39f3-43af-94de-4152d5ee9a8c/41b9a448-39f3-43af-94de-4152d5ee9a8c3.gif)
![信息論實驗報告_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/20/41b9a448-39f3-43af-94de-4152d5ee9a8c/41b9a448-39f3-43af-94de-4152d5ee9a8c4.gif)
![信息論實驗報告_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/20/41b9a448-39f3-43af-94de-4152d5ee9a8c/41b9a448-39f3-43af-94de-4152d5ee9a8c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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)”三個“系統(tǒng)”層面,逐步深入展開,以嚴(yán)密的數(shù)學(xué)分析貫串始終。通過教學(xué),使學(xué)生掌握信息理論的基本概念和信息分析方法,為今后進(jìn)一步研究信息科學(xué)和信息技術(shù)打下堅實的理論基礎(chǔ)。實驗一:唯一可譯碼判斷實驗學(xué)時:3實驗類型:(演示、驗證、綜合、設(shè)計、研究)實驗要求:(必修、選修)一、實驗?zāi)?/p>
2、的通過本次試驗了解唯一可譯碼地判斷原理;實現(xiàn)用c語言編寫判斷唯一可譯碼地程序二、實驗內(nèi)容編程實現(xiàn)唯一可譯碼的判決準(zhǔn)則sardinaspatterson算法三、實驗原理、方法和手段sardinaspatterson算法描述: 設(shè)c為碼字集合,按以下步驟構(gòu)造此碼的尾隨后綴集合f: (1) 考查c中所有的碼字,若wi是wj的前綴,則將相應(yīng)的后綴作為一個尾隨后綴放入集合f0中; (2) 考查c和fi兩個集合,若wjc是wifi的前綴或wifi 是wjc的前綴,則將相應(yīng)的后綴作為尾隨后綴碼放入集合fi+1中; (3)f=fi即為碼c的尾隨后綴集合; (4) 若f中出現(xiàn)了c中的元素,則算法終止,返回假(c
3、不是唯一可譯碼);否則若f中沒有出現(xiàn)新的元素,則返回真。在我們設(shè)計的算法中,需要注意的是我們需要的是先輸出所有尾隨后綴的集合,然后再判斷該碼是否是唯一可譯碼,即如f中出現(xiàn)了c中的元素,則c不是唯一可譯碼,否則若f中沒有出現(xiàn)新的元素,則c為唯一可譯碼。而不是f中出現(xiàn)c中的元素就終止,這也是在本題的要求中需要注意的問題。1、 概要設(shè)計:由于需要判斷尾隨后綴,所以我們需要反復(fù)的比較c和f中的碼字。1) 首先我們用一個b3030的數(shù)組來存放所有的尾隨后綴的集合;用q記錄所有尾隨后綴的個數(shù);2) 用數(shù)組a3030來存放輸入的碼字,l30來存放碼字的長度;通過一個雙重循環(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) 計算b3030中尾隨后綴的長度,用k1表示;并調(diào)用huozhui(bi,aj,k1,lj)其中k1lj來a3030中所存在的后綴,并加入到b3030中,通過一個循環(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ù)中所需要注意的問題就是一個比較的問題,也就是實現(xiàn)6)中所提到的。四,實驗數(shù)據(jù)源1: 10,0.1002: 10,110,1110五、實驗組織運行要求以學(xué)生自主訓(xùn)練為主的開放模式組織教學(xué)六、實驗條件1. 計算機(jī)2. win
6、dows xp3. vc+ 6.0七、實驗內(nèi)容實驗源程序#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)/判斷一個碼是否在一個碼集合中,在則返回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;/判斷兩個碼字是否一個是另一個的前綴,如果是則生成后綴碼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;/輸入待檢測碼的個數(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八,實驗心得1.更深入理解了唯一可譯碼地判斷原則2.學(xué)會了用sardinaspatterson算法實現(xiàn)編碼判斷3.掌握用c編程實
12、現(xiàn)唯一可譯碼判斷實驗二: huffman編碼的實現(xiàn)實驗學(xué)時:3實驗類型:(演示、驗證、綜合、設(shè)計、研究)實驗要求:(必修、選修)一、 實驗?zāi)康睦斫夂驼莆説uffman編碼的基本原理和方法,實現(xiàn)對信源符號的huffman編碼。二、 實驗內(nèi)容1. 理解和掌握huffman編碼的基本原理和方法2. 通過matlab編程實現(xiàn)對單信源符號的huffma編碼3. 計算信源的信息熵、平均碼長以及編碼效率三、 實驗原理1 huffman編碼按信源符號出現(xiàn)的概率而編碼,其平均碼長最短,所以是最優(yōu)碼。2 無失真信源編碼定理:對于熵為h(x)的離散無記憶的平穩(wěn)信源,必存在一種無失真編碼,使每符號的平均碼長滿足不等式
13、:3 二元huffman編碼:若將編碼設(shè)計為長度不等的二進(jìn)制編碼,即讓待傳字符串中出現(xiàn)概率大的字符采用盡可能短的碼字,而把長的碼字分配給概率小的信源符號。構(gòu)造方法如下:(a) 將信源概率分布按大小以遞減次序排列;合并兩概率最小者,得到新信源;并分配0/1符號。(b) 新信源若包含兩個以上符號返回(a),否則到(c)。(c) 從最后一級向前按順序?qū)懗雒啃旁捶査鶎?yīng)的碼字。4huffman編碼算法procedure huffman(si ,pi ) if q=2then return s0 0, s1 1else 降序排序pi縮減信源:創(chuàng)建一個符號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ù)據(jù)源1 2 五、實驗組織運行要求以學(xué)生自主訓(xùn)練為主的開放模式組織教學(xué)六、實驗條件4. 計算機(jī)5. windows 6. vc+ 6.0七、實驗內(nèi)容實驗源程序#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é)點結(jié)構(gòu)體 */* 構(gòu)造一顆哈夫曼樹 */void huffmantree (hnodetype huffnodemaxnode, int n) /* i、j: 循環(huán)變量,m1、m2:構(gòu)造哈夫曼樹不同過程中兩個最小權(quán)值結(jié)點的權(quán)值, x1、x2:構(gòu)造哈夫曼樹不同過程中兩個最小權(quán)值結(jié)點在數(shù)組中的序號
16、。*/ int i, j, m1, m2, x1, x2; /* 初始化存放哈夫曼樹數(shù)組 huffnode 中的結(jié)點 */ for (i=0; i2*n-1; i+) huffnodei.weight = 0; huffnodei.parent =-1; huffnodei.lchild =-1; huffnodei.lchild =-1; /* end for */ /* 輸入 n 個葉子結(jié)點的權(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中存放兩個無父結(jié)點且結(jié)點權(quán)值最小的兩個結(jié)點 */ x1=x2=0; /* 找出所有結(jié)點中權(quán)值最小、無父結(jié)點的兩個結(jié)點,并合并之為一顆二叉樹 */ 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è)置找到的兩個子結(jié)點 x1、x2 的父結(jié)點信息 */ 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; /* 定義一個結(jié)點結(jié)構(gòu)體數(shù)組 */ hcodetype huffcodemaxleaf, cd; /* 定義一個編碼結(jié)構(gòu)體數(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)六年級口算題卡
- 小學(xué)六年級800道數(shù)學(xué)口算題
- 2025年沈陽貨運從業(yè)資格試題及答案詳解
- 2025年太原貨車從業(yè)資格證答題技巧
- 監(jiān)控錄像管理協(xié)議書(2篇)
- 2024-2025學(xué)年高中地理課時分層作業(yè)13噪聲污染及其防治含解析湘教版選修6
- 2024-2025學(xué)年八年級數(shù)學(xué)上冊第十一章三角形11.2與三角形有關(guān)的角作業(yè)設(shè)計新版新人教版
- 人事行政助理年終工作總結(jié)
- 公司辦公室工作總結(jié)
- 人力資源部年度個人工作計劃
- 2024年疾控中心支部工作計劃范本
- 《無菌檢查培訓(xùn)》課件
- 2024-2030年中國香菇行業(yè)銷售狀況及供需前景預(yù)測報告
- 2024年廣東省公務(wù)員錄用考試《行測》真題及解析
- 幼兒園開學(xué)師德培訓(xùn)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- 金蛇納瑞2025年公司年會通知模板
- 《記念劉和珍君》課件
- 北京市城市管理委員會直屬事業(yè)單位公開招聘10人高頻難、易錯點500題模擬試題附帶答案詳解
- 禁止送禮的協(xié)議書
評論
0/150
提交評論