版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 信息論與編碼課程設(shè)計(jì)報(bào)告</p><p> 設(shè)計(jì)題目: 統(tǒng)計(jì)信源熵與香農(nóng)編碼 </p><p><b> 設(shè)計(jì)任務(wù)與要求</b></p><p><b> 1、 統(tǒng)計(jì)信源熵</b></p><p> 要求:統(tǒng)計(jì)任意文本文件中各字符(區(qū)分大小寫)數(shù)量,計(jì)算字符
2、概率,并計(jì)算信源熵。</p><p><b> 2、香農(nóng)編碼</b></p><p> 要求:任意輸入消息概率,利用香農(nóng)編碼方法進(jìn)行編碼,并計(jì)算信源熵和編碼效率。</p><p><b> 設(shè)計(jì)思路</b></p><p> 本次課程設(shè)計(jì)中主要運(yùn)用C語言編程以實(shí)現(xiàn)任務(wù)要求,分析所需要的統(tǒng)計(jì)量
3、以及相關(guān)變量,依據(jù)具體公式和計(jì)算步驟編寫語句,組成完整C語言程序。運(yùn)行環(huán)境為VC++6.0。 </p><p><b> 1、統(tǒng)計(jì)信源熵 </b></p><p> 定義:信源各個(gè)離散消息的自信息量的數(shù)學(xué)期望為信源的平均信息量,一般稱為信源的信息熵,也叫信源熵或香農(nóng)熵,有時(shí)稱為無條件熵或熵函數(shù),簡(jiǎn)稱熵,記為H(X)。 </p><p>&l
4、t;b> 計(jì)算公式:。</b></p><p> 統(tǒng)計(jì)信源熵就是對(duì)一篇英文文章,或者是輸入一段字符串,通過對(duì)其中的a,b,c,d/A,B,C,D.....(區(qū)分大小寫)和數(shù)字符號(hào)1,2,3,4…以及各個(gè)符號(hào)如:, 。 !等統(tǒng)計(jì)符號(hào)的個(gè)數(shù)N和每一個(gè)符號(hào)的數(shù)目n,有這個(gè)公式P=n/N可得每個(gè)字母的概率,最后又信源熵計(jì)算公式 ,可計(jì)算出信源熵H,所以整體步驟就是先統(tǒng)計(jì)出英文段落的總字符數(shù),或者是輸
5、入字符串的總個(gè)數(shù)。包括字母(區(qū)分大小寫)、數(shù)字、標(biāo)點(diǎn)等,然后再統(tǒng)計(jì)每個(gè)字符的個(gè)數(shù),即每遇到同一個(gè)字符就++1,直到算出每個(gè)字符的個(gè)數(shù),進(jìn)而算出每個(gè)字符的概率,再由信源熵計(jì)算公式計(jì)算出信源熵。</p><p><b> 2、香農(nóng)編碼: </b></p><p> 香農(nóng)編碼主要通過一系列步驟支出平均碼長(zhǎng)與信源之間的關(guān)系,同時(shí)使平均碼長(zhǎng)達(dá)到極限值,即選擇的每個(gè)碼字的長(zhǎng)度
6、滿足下式:</p><p><b> 具體步驟如下: </b></p><p> 將信源消息符號(hào)按其概率從大到小排列</p><p> 確定滿足下列不等式的整數(shù)碼長(zhǎng)Ki</p><p> 令P1=0,計(jì)算第i個(gè)消息的累加概率</p><p> 將累加概率Pi變換成二進(jìn)制數(shù),取小數(shù)點(diǎn)后Ki
7、位為該消息的碼字</p><p> 在香農(nóng)編碼中對(duì)于求解編碼效率主要是依靠這個(gè)公式:R=H(X)/K,其中</p><p><b> ? </b></p><p> 對(duì)于求解信源熵主要依靠公式: </p><p><b> 設(shè)計(jì)流程圖</b></p><p><
8、b> 1、統(tǒng)計(jì)信息熵</b></p><p><b> 2、香農(nóng)編碼</b></p><p><b> 程序運(yùn)行及結(jié)果</b></p><p><b> 1、統(tǒng)計(jì)信息熵</b></p><p><b> 2、香農(nóng)編碼</b>&l
9、t;/p><p><b> 心得體會(huì)</b></p><p> 這真是一次有意義的學(xué)習(xí)旅程。在設(shè)計(jì)期間,我和我的團(tuán)隊(duì)一直沉浸于探索、探討之中,各種有意思的想法層出不窮。我們總是想盡可能的把課程設(shè)計(jì)做的足夠的完美,足夠的精彩,可是同時(shí)又不得不面臨一個(gè)又一個(gè)的技術(shù)難題。有些經(jīng)過我們的努力,通過不斷地修改不斷的翻閱資料得以解決,可是仍有好多的的問題是我們苦思冥想所參索不透的
10、!真是知識(shí)用時(shí)方恨少??!</p><p> 課程設(shè)計(jì)很是考察個(gè)人能力和團(tuán)隊(duì)合作協(xié)調(diào)能力,在面對(duì)自己所不熟悉甚至不了解的問題時(shí),是怎樣一步步的設(shè)計(jì)完成給定的任務(wù),及時(shí)有成效的解決面臨的問題的。從整體的分析設(shè)計(jì)到后面語句變量的敲定最終完成課題是對(duì)自己極其有益的鍛煉,從中收獲的不僅是知識(shí)上的,也是學(xué)習(xí)經(jīng)驗(yàn)的積累和思維能力的提升,雖然一次課程設(shè)計(jì)任務(wù)不是那么繁重,可是認(rèn)真去完成其中的一個(gè)個(gè)細(xì)節(jié)也是一種難得的體驗(yàn)。還有就
11、是在此過程中,經(jīng)常遇到自己不能解決的問題,就會(huì)請(qǐng)教其他組員,一起共同討論,直到解決,這是的我們充分認(rèn)識(shí)到了團(tuán)隊(duì)協(xié)作的重要性,也體驗(yàn)到了在問題得到解決的時(shí)候所獨(dú)有的那份喜悅。也體會(huì)到了與隊(duì)友的合作更是一件快樂的事情,只有彼此都付出,彼此都努力維護(hù)才能將作品做的更加完美。</p><p> 在此次課程設(shè)計(jì)中,我們主要是做了統(tǒng)計(jì)信源熵與香農(nóng)編碼這兩個(gè)題目,初一看題目感覺應(yīng)該很簡(jiǎn)單,但真正的去做的時(shí)候才發(fā)現(xiàn)并不是想象的
12、那么簡(jiǎn)單,本次課設(shè)的困難主要集中在程序的編寫上。我們團(tuán)隊(duì)是基于C語言編寫的程序。C語言雖然一直都在用,可每次都感覺非常難。雖然我們的思路是正確的、明確的,可是由于變量的定義,語法的不規(guī)范,以及指針的指向錯(cuò)誤等等一系列問題阻礙了我們走向勝利。不過我們是不會(huì)輕易放棄的。我們起早貪黑,熬夜到半夜一點(diǎn),翻書翻了好幾本。</p><p> 我認(rèn)為本次課程設(shè)計(jì)是成功的,在這學(xué)期的課程設(shè)計(jì)中,在收獲知識(shí)的同時(shí),還收獲了閱歷,
13、收獲了成熟,在此過程中,我們通過查找大量資料,請(qǐng)教學(xué)長(zhǎng),以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考,在各種其它能力上也都有了提高。更重要的是,在課程設(shè)計(jì)上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐</p><p><b> 參考文獻(xiàn)</b></p><p> [1]曹雪虹,張宗橙.信息論與編碼.北
14、京:清華大學(xué)出版社,2009.</p><p> [2]楊永國(guó),張冬明.Visual C++6.0實(shí)用教程.北京:清華大學(xué)出版社,2007.</p><p> [3]賈宗璞,許合利.《C語言程序設(shè)計(jì)》人民郵電出版社.2014.</p><p><b> 附錄</b></p><p><b> 1、統(tǒng)計(jì)信
15、息熵</b></p><p> #include <stdio.h></p><p> #include <math.h></p><p> #include <stdlib.h> </p><p> #define N 1000</p><p> int m
16、ain(void)</p><p><b> { </b></p><p> char s[N],M[N]; </p><p> int i = 0,j=0,n=0,L=0; </p><p> int len, num[95] = {0}; </p><p> dou
17、ble result=0,p[95]= {0}; </p><p> FILE *f; </p><p> char temp[N]; </p><p><b> char c;</b></p><p> int sum=0;</p><p> printf("p
18、lease input an essay:\n"); </p><p><b> gets(s); </b></p><p> sum=strlen(s);</p><p> printf("%d",sum);</p><p> for(i=0; i<sum; i++)<
19、;/p><p><b> { </b></p><p> if(s[i]>=' '&&s[i]<='~')</p><p> num[s[i]-32]++;</p><p><b> }</b></p><p>
20、; printf("英文文本文件中各字符數(shù)量:\n");</p><p> for(j=0; j<95; j++)</p><p><b> { </b></p><p> M[j]=num[j]; </p><p> printf("%4c:%d\t",j+32,
21、M[j]);/*輸出格式,%4c在該字符前在空三個(gè)空格*/</p><p><b> L++; </b></p><p> if(L==15)/*輸出格式,每行十五個(gè)字符*/</p><p><b> {</b></p><p> printf("\n");
22、</p><p><b> L=0;</b></p><p><b> } </b></p><p><b> } </b></p><p> /*****計(jì)算各個(gè)字符出現(xiàn)概率****/ </p><p> printf(&quo
23、t;\n文本文件中各個(gè)字符概率:\n");</p><p> for(i=0; i<95; i++)</p><p><b> { </b></p><p> p[i]=(double)num[i]/sum; </p><p> printf(" P(%c)=%f\t",i
24、+32,p[i]);</p><p><b> n++;</b></p><p> if(n==5)/*輸出格式,每行五個(gè)字符概率*/</p><p><b> { </b></p><p> printf("\n");</p><p>
25、;<b> n=0;</b></p><p><b> }</b></p><p><b> } </b></p><p> for(i=0; i<95; i++) /*計(jì)算信源熵*/</p><p><b> { </b></p
26、><p> if (p[i]!=0) </p><p> result=result+p[i]*log(p[i])*1.433;/*信源熵,I(x)=-logp(x)*/</p><p><b> } </b></p><p> result=-result; </p><p> print
27、f("信源熵為:%f",result); </p><p> printf("\n");</p><p> return 0; </p><p><b> } </b></p><p><b> 2、香農(nóng)編碼</b></p><p
28、> #include<stdio.h> </p><p> #include<math.h> </p><p> void main() </p><p><b> { </b></p><p> int i,n, j,k; </p><p> fl
29、oat sum=0;</p><p> float b[100]={0};</p><p> float p[100]={0}; </p><p> float m,H1=0,H2=0; </p><p> float Pi[100]={0}; </p><p> int L[100]; </p
30、><p> char c[100][100]; </p><p> printf("輸入X的個(gè)數(shù) \n"); </p><p> scanf("%d",&n); </p><p> printf("\n"); </p><p> printf
31、("輸入P[i]的概率分布\n"); </p><p> for(i=0;i<n;i++) </p><p> scanf("%f",&p[i]); </p><p> for(i=0;i<n;i++) </p><p> sum=sum+p[i]; </p&g
32、t;<p> if (fabs(sum-1) > 1e-6) </p><p><b> { </b></p><p><b> sum=0;</b></p><p> printf("錯(cuò)誤輸入,請(qǐng)重新輸入\n"); </p><p>
33、printf("輸入X的個(gè)數(shù)\n"); </p><p> scanf("%d",&n); </p><p> printf("\n"); </p><p> printf("輸入P[i]的概率分布\n"); </p><p> for
34、(i=0;i<n;i++) </p><p> scanf("%f",&p[i]); </p><p> for(i=0;i<=n;i++) </p><p> sum=sum+p[i]; </p><p><b> }</b></p><p
35、> for(j=0;j<n-1;j++) </p><p><b> { </b></p><p> for(i=0;i<n-1-j;i++) </p><p> if(p[i]<p[i+1]) </p><p><b> { </b><
36、;/p><p><b> m=p[i];</b></p><p> p[i]=p[i+1];</p><p> p[i+1]=m; </p><p><b> }</b></p><p><b> }</b></p><p>
37、; Pi[0]=0; </p><p> for(j=1;j<n+1;j++) </p><p><b> { </b></p><p> Pi[j]=Pi[j-1]+p[j-1];</p><p><b> } </b></p><p> for
38、(i=0;i<n;i++) </p><p><b> { </b></p><p> m=log(1/p[i])/log(2); </p><p><b> b[i]=m;</b></p><p> if(m==(int)m) </p><p>
39、L[i]=(int)m; </p><p><b> else </b></p><p> L[i]=(int)(m+1); </p><p><b> } </b></p><p> for(i=0;i<n;i++) </p><p><b>
40、{ </b></p><p><b> m=Pi[i]; </b></p><p> for(k=0;k<L[i];k++) </p><p><b> { </b></p><p><b> m=m*2.00;</b></p>
41、<p> if(m>=1) </p><p><b> { </b></p><p> m=m-1.00; </p><p> c[i][k]='1'; </p><p><b> } </b></p><p
42、><b> else </b></p><p> c[i][k]='0'; </p><p><b> } </b></p><p><b> }</b></p><p> printf("P[i]序列為 累加概率pi為 -logp(
43、x)為 碼長(zhǎng)L為\t");</p><p> printf(" 碼字為\n"); </p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> printf("%5.2f\t %5.2f\t\t %5.2
44、f\t\t%d\t",p[i],Pi[i],b[i],L[i]); </p><p> for(k=0;k<L[i];k++) </p><p> printf(" %c",c[i][k]); </p><p> printf("\n");</p><p><b> }
45、 </b></p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> H1=H1-p[i]*log10(p[i])/log10(2); </p><p> H2=H2+p[i]*L[i]; </p><p>&l
46、t;b> }</b></p><p> printf("信息熵為:%0.3f\n",H1);</p><p> printf("平均碼長(zhǎng)為:%0.3f\n",H2);</p><p> printf("編碼效率為:%0.3f\n",H1/H2); </p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息論與編碼課程設(shè)計(jì)--統(tǒng)計(jì)信源熵與哈夫曼編碼
- 信息論與編碼 信源與信息熵2
- 信息論與編碼課程設(shè)計(jì)
- 信息論與編碼課程設(shè)計(jì)
- 信息論與編碼課程設(shè)計(jì)
- 信息論與編碼課程設(shè)計(jì)
- 信息論編碼課程設(shè)計(jì)--霍夫曼碼研究與設(shè)計(jì)
- 信息論與編碼課程設(shè)計(jì)(哈夫曼編碼的分析與實(shí)現(xiàn))
- 信息論與編碼答案
- 信息論與編碼論文
- 信息論與編碼論文
- 信息論與編碼-教案
- 信息論與編碼習(xí)題(2)
- 信息論與編碼習(xí)題答案
- 信息論與糾錯(cuò)編碼題庫
- 信息論與編碼實(shí)驗(yàn)一
- 信息論與編碼復(fù)習(xí)總結(jié)
- 信息論與編碼b課程教學(xué)大綱
- 信息論與編碼b課程教學(xué)大綱
- 信息論與編碼b課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論