2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  信息論與編碼課程設(shè)計報告</p><p>  設(shè)計題目: 統(tǒng)計信源熵與香農(nóng)編碼 </p><p><b>  設(shè)計任務(wù)與要求</b></p><p><b>  1、 統(tǒng)計信源熵</b></p><p>  要求:統(tǒng)計任意文本文件中各字符(區(qū)分大小寫)數(shù)量,計算字符

2、概率,并計算信源熵。</p><p><b>  2、香農(nóng)編碼</b></p><p>  要求:任意輸入消息概率,利用香農(nóng)編碼方法進(jìn)行編碼,并計算信源熵和編碼效率。</p><p><b>  設(shè)計思路</b></p><p>  本次課程設(shè)計中主要運(yùn)用C語言編程以實現(xiàn)任務(wù)要求,分析所需要的統(tǒng)計量

3、以及相關(guān)變量,依據(jù)具體公式和計算步驟編寫語句,組成完整C語言程序。運(yùn)行環(huán)境為VC++6.0。 </p><p><b>  1、統(tǒng)計信源熵 </b></p><p>  定義:信源各個離散消息的自信息量的數(shù)學(xué)期望為信源的平均信息量,一般稱為信源的信息熵,也叫信源熵或香農(nóng)熵,有時稱為無條件熵或熵函數(shù),簡稱熵,記為H(X)。 </p><p>&l

4、t;b>  計算公式:。</b></p><p>  統(tǒng)計信源熵就是對一篇英文文章,或者是輸入一段字符串,通過對其中的a,b,c,d/A,B,C,D.....(區(qū)分大小寫)和數(shù)字符號1,2,3,4…以及各個符號如:, 。 !等統(tǒng)計符號的個數(shù)N和每一個符號的數(shù)目n,有這個公式P=n/N可得每個字母的概率,最后又信源熵計算公式 ,可計算出信源熵H,所以整體步驟就是先統(tǒng)計出英文段落的總字符數(shù),或者是輸

5、入字符串的總個數(shù)。包括字母(區(qū)分大小寫)、數(shù)字、標(biāo)點等,然后再統(tǒng)計每個字符的個數(shù),即每遇到同一個字符就++1,直到算出每個字符的個數(shù),進(jìn)而算出每個字符的概率,再由信源熵計算公式計算出信源熵。</p><p><b>  2、香農(nóng)編碼: </b></p><p>  香農(nóng)編碼主要通過一系列步驟支出平均碼長與信源之間的關(guān)系,同時使平均碼長達(dá)到極限值,即選擇的每個碼字的長度

6、滿足下式:</p><p><b>  具體步驟如下: </b></p><p>  將信源消息符號按其概率從大到小排列</p><p>  確定滿足下列不等式的整數(shù)碼長Ki</p><p>  令P1=0,計算第i個消息的累加概率</p><p>  將累加概率Pi變換成二進(jìn)制數(shù),取小數(shù)點后Ki

7、位為該消息的碼字</p><p>  在香農(nóng)編碼中對于求解編碼效率主要是依靠這個公式:R=H(X)/K,其中</p><p><b>  ? </b></p><p>  對于求解信源熵主要依靠公式: </p><p><b>  設(shè)計流程圖</b></p><p><

8、b>  1、統(tǒng)計信息熵</b></p><p><b>  2、香農(nóng)編碼</b></p><p><b>  程序運(yùn)行及結(jié)果</b></p><p><b>  1、統(tǒng)計信息熵</b></p><p><b>  2、香農(nóng)編碼</b>&l

9、t;/p><p><b>  心得體會</b></p><p>  這真是一次有意義的學(xué)習(xí)旅程。在設(shè)計期間,我和我的團(tuán)隊一直沉浸于探索、探討之中,各種有意思的想法層出不窮。我們總是想盡可能的把課程設(shè)計做的足夠的完美,足夠的精彩,可是同時又不得不面臨一個又一個的技術(shù)難題。有些經(jīng)過我們的努力,通過不斷地修改不斷的翻閱資料得以解決,可是仍有好多的的問題是我們苦思冥想所參索不透的

10、!真是知識用時方恨少??!</p><p>  課程設(shè)計很是考察個人能力和團(tuán)隊合作協(xié)調(diào)能力,在面對自己所不熟悉甚至不了解的問題時,是怎樣一步步的設(shè)計完成給定的任務(wù),及時有成效的解決面臨的問題的。從整體的分析設(shè)計到后面語句變量的敲定最終完成課題是對自己極其有益的鍛煉,從中收獲的不僅是知識上的,也是學(xué)習(xí)經(jīng)驗的積累和思維能力的提升,雖然一次課程設(shè)計任務(wù)不是那么繁重,可是認(rèn)真去完成其中的一個個細(xì)節(jié)也是一種難得的體驗。還有就

11、是在此過程中,經(jīng)常遇到自己不能解決的問題,就會請教其他組員,一起共同討論,直到解決,這是的我們充分認(rèn)識到了團(tuán)隊協(xié)作的重要性,也體驗到了在問題得到解決的時候所獨有的那份喜悅。也體會到了與隊友的合作更是一件快樂的事情,只有彼此都付出,彼此都努力維護(hù)才能將作品做的更加完美。</p><p>  在此次課程設(shè)計中,我們主要是做了統(tǒng)計信源熵與香農(nóng)編碼這兩個題目,初一看題目感覺應(yīng)該很簡單,但真正的去做的時候才發(fā)現(xiàn)并不是想象的

12、那么簡單,本次課設(shè)的困難主要集中在程序的編寫上。我們團(tuán)隊是基于C語言編寫的程序。C語言雖然一直都在用,可每次都感覺非常難。雖然我們的思路是正確的、明確的,可是由于變量的定義,語法的不規(guī)范,以及指針的指向錯誤等等一系列問題阻礙了我們走向勝利。不過我們是不會輕易放棄的。我們起早貪黑,熬夜到半夜一點,翻書翻了好幾本。</p><p>  我認(rèn)為本次課程設(shè)計是成功的,在這學(xué)期的課程設(shè)計中,在收獲知識的同時,還收獲了閱歷,

13、收獲了成熟,在此過程中,我們通過查找大量資料,請教學(xué)長,以及不懈的努力,不僅培養(yǎng)了獨立思考,在各種其它能力上也都有了提高。更重要的是,在課程設(shè)計上,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]曹雪虹,張宗橙.信息論與編碼.北

14、京:清華大學(xué)出版社,2009.</p><p>  [2]楊永國,張冬明.Visual C++6.0實用教程.北京:清華大學(xué)出版社,2007.</p><p>  [3]賈宗璞,許合利.《C語言程序設(shè)計》人民郵電出版社.2014.</p><p><b>  附錄</b></p><p><b>  1、統(tǒng)計信

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在該字符前在空三個空格*/</p><p><b>  L++; </b></p><p>  if(L==15)/*輸出格式,每行十五個字符*/</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>  /*****計算各個字符出現(xiàn)概率****/ </p><p>  printf(&quo

23、t;\n文本文件中各個字符概率:\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)/*輸出格式,每行五個字符概率*/</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++) /*計算信源熵*/</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的個數(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("錯誤輸入,請重新輸入\n"); </p><p>  

33、printf("輸入X的個數(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)為 碼長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("平均碼長為:%0.3f\n",H2);</p><p>  printf("編碼效率為:%0.3f\n",H1/H2); </p><p

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論