信息論與編碼課程設(shè)計(jì)哈夫曼編碼的分析與實(shí)現(xiàn)_第1頁(yè)
信息論與編碼課程設(shè)計(jì)哈夫曼編碼的分析與實(shí)現(xiàn)_第2頁(yè)
信息論與編碼課程設(shè)計(jì)哈夫曼編碼的分析與實(shí)現(xiàn)_第3頁(yè)
信息論與編碼課程設(shè)計(jì)哈夫曼編碼的分析與實(shí)現(xiàn)_第4頁(yè)
信息論與編碼課程設(shè)計(jì)哈夫曼編碼的分析與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、教師評(píng)語(yǔ):吉林建筑大學(xué)電氣與電子信息工程學(xué)院信息理論與編碼課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:哈夫曼編碼的分析與實(shí)現(xiàn)專業(yè)班級(jí):電子信息工程101學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:呂卅王超設(shè)計(jì)時(shí)間:2013.11.182013.11.29成績(jī)?cè)u(píng)閱教師日期一、設(shè)計(jì)的作用、目的信息論與編碼是一門理論與實(shí)踐密切結(jié)合的課程,課程設(shè)計(jì)是其實(shí)踐性教學(xué)環(huán)節(jié)之一,同時(shí)也是對(duì)課堂所學(xué)理論知識(shí)的鞏固和補(bǔ)充。其主要目的是加深對(duì)理論知識(shí)的理解,掌握查閱有關(guān)資料的技能,提高實(shí)踐技能,培養(yǎng)獨(dú)立分析問(wèn)題、解決問(wèn)題及實(shí)際應(yīng)用的能力。通過(guò)完成具體編碼算法的程序設(shè)計(jì)和調(diào)試工作,提高編程能力,深刻理解信源編碼、信道編譯碼的基本思想和目的,掌握編碼的基本原

2、理與編碼過(guò)程,增強(qiáng)邏輯思維能力,培養(yǎng)和提高自學(xué)能力以及綜合運(yùn)用所學(xué)理論知識(shí)去分析解決實(shí)際問(wèn)題的能力,逐步熟悉開(kāi)展科學(xué)實(shí)踐的程序和方法二、設(shè)計(jì)任務(wù)及要求通過(guò)課程設(shè)計(jì)各環(huán)節(jié)的實(shí)踐,應(yīng)使學(xué)生達(dá)到如下要求:1,理解無(wú)失真信源編碼的理論基礎(chǔ),掌握無(wú)失真信源編碼的基本方法;2 .掌握哈夫曼編碼/費(fèi)諾編碼方法的基本步驟及優(yōu)缺點(diǎn);3 .深刻理解信道編碼的基本思想與目的,理解線性分組碼的基本原理與編碼過(guò)程;4,能夠使用MATLAB或其他語(yǔ)言進(jìn)行編程,編寫的函數(shù)要有通用性。三、設(shè)計(jì)內(nèi)容一個(gè)有8個(gè)符號(hào)的信源X,各個(gè)符號(hào)出現(xiàn)的概率為:,X1;產(chǎn),X2,x3,x4,x5,xx7x8.1P(X)_、0

3、.10.070.060.050.04J編碼方法:先將信源符號(hào)按其出現(xiàn)的概率大小依次排列,并取概率最小的字母分別配以0和1兩個(gè)碼元(先0后1或者先1后0,以后賦值固定),再將這兩個(gè)概率相加作為一個(gè)新字母的概率,與未分配的二進(jìn)制符號(hào)的字母重新排隊(duì)。并不斷重復(fù)這一過(guò)程,直到最后兩個(gè)符號(hào)配以0和1為止。最后從最后一級(jí)開(kāi)始,向前返回得到各個(gè)信源符號(hào)所對(duì)應(yīng)的碼元序列,即為對(duì)應(yīng)的碼字。哈夫曼編碼方式得到的碼并非唯一的。在對(duì)信源縮減時(shí),兩個(gè)概率最小的符號(hào)合并后的概率與其他信源符號(hào)的概率相同時(shí),這兩者在縮減中的排序?qū)?huì)導(dǎo)致不同碼字,但不同的排序?qū)?huì)影響碼字的長(zhǎng)度,一般講合并的概率放在上面,這樣可獲得較小的碼方差

4、。四、設(shè)計(jì)原理4.1 哈夫曼編碼步驟(1)將信源消息符號(hào)按照其出現(xiàn)的概率大小依次排列為pl_p2_pn(2)取兩個(gè)概率最小的字母分別配以0和1兩個(gè)碼元,并將這兩個(gè)概率相加作為一個(gè)新的概率,與未分配的二進(jìn)制符號(hào)的字母重新排隊(duì)。(3)對(duì)重新排列后的兩個(gè)最小符號(hào)重復(fù)步驟(2)的過(guò)程。(4)不斷重復(fù)上述過(guò)程,知道最后兩個(gè)符號(hào)配以0和1為止。(5)從最后一級(jí)開(kāi)始,向前返回得到的各個(gè)信源符號(hào)所對(duì)應(yīng)的碼元序列,即為相應(yīng)的碼字。4.2 哈夫曼編碼特點(diǎn)哈夫曼編碼是用概率匹配的方法進(jìn)行信源匹配方法進(jìn)行信源。它的特點(diǎn)是:(1)哈夫曼的編碼方法保證了概率大的符號(hào)對(duì)應(yīng)于短碼,概率小的符號(hào)對(duì)應(yīng)于長(zhǎng)碼,充分應(yīng)用了短碼。(2

5、)縮減信源的最后兩個(gè)碼字總是最后一位不同,從而保證了哈夫曼編碼是即時(shí)碼。(3)哈夫曼編碼所形成的碼字不是唯一的,但編碼效率是唯一的,在對(duì)最小的兩個(gè)速率符號(hào)賦值時(shí)可以規(guī)定大的為“1”,小得為“0”,如果兩個(gè)符號(hào)的出現(xiàn)概率相等時(shí),排列時(shí)無(wú)論哪個(gè)在前都可以,所以哈夫曼所構(gòu)造的碼字不是唯一的,對(duì)于同一個(gè)信息源,無(wú)論上述的順序如何排列,他的平均碼長(zhǎng)是不會(huì)改變的,所以編碼效率是唯一的。(4)只有當(dāng)信息源各符號(hào)出現(xiàn)的概率很不平均的時(shí)候,哈夫曼編碼的效果才明顯。(5)哈夫曼編碼必須精確的統(tǒng)計(jì)出原始文件中每個(gè)符號(hào)出現(xiàn)頻率,如果沒(méi)有這些精確的統(tǒng)計(jì)將達(dá)不到預(yù)期效果。哈夫曼編碼通常要經(jīng)過(guò)兩遍操作,第一遍進(jìn)行統(tǒng)計(jì),第二

6、遍產(chǎn)生編碼,所以編碼速度相對(duì)慢。另外實(shí)現(xiàn)電路復(fù)雜,各種長(zhǎng)度的編碼的編譯過(guò)程也是比較復(fù)雜的,因此解壓縮的過(guò)程也比較慢。(6)哈夫曼編碼只能用整數(shù)來(lái)表示單個(gè)符號(hào),而不能用小數(shù),這很大程度上限制了壓縮效果。哈夫曼所有位都是合在一起的,如果改動(dòng)其中一位就可以使其數(shù)據(jù)變得面目全非。五、設(shè)計(jì)步驟5.1 以框圖形式畫出哈夫曼編碼過(guò)程(哈夫曼編碼要求構(gòu)建哈夫曼樹(shù))表1哈夫曼編碼信源編碼概率編碼過(guò)程碼字碼長(zhǎng)X0.601.090.230.37赤.4/11X3(0.1870.1900.2310013X30.10.1卜10.13/0.1

7、810113X40.10.0700.091,0.06100004X50.0701004X60.0601014X70.05J000105X80.041000115哈夫曼樹(shù):給定n個(gè)實(shí)數(shù)w1,w2,wn(n2),求一個(gè)具有n個(gè)結(jié)點(diǎn)的二叉數(shù),使其帶權(quán)路徑長(zhǎng)度最小。所謂樹(shù)的帶權(quán)路徑長(zhǎng)度,就是樹(shù)中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長(zhǎng)度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長(zhǎng)度為葉結(jié)點(diǎn)的層數(shù))。樹(shù)的帶權(quán)路徑長(zhǎng)度為WPL=(W1*L1+W2*L2+W3*L3+.+Wn*Ln),N個(gè)權(quán)值Wi(i=1,2,.n)構(gòu)成一棵有N個(gè)葉結(jié)點(diǎn)的二叉樹(shù),相應(yīng)的葉結(jié)點(diǎn)的路徑長(zhǎng)度為L(zhǎng)i(i=1,2,

8、.n)??梢宰C明哈夫曼樹(shù)的WPL是最小的。(1)根據(jù)與n個(gè)權(quán)值w1,w2川口對(duì)應(yīng)的n個(gè)結(jié)點(diǎn)構(gòu)成具有n棵二叉樹(shù)的森林F=T1,T2北,其中第i棵二叉樹(shù)Ti(1in)都只有一個(gè)權(quán)值為wi的根結(jié)點(diǎn),其左、右子樹(shù)均為空。(2)在森林F中選出兩棵根結(jié)點(diǎn)的權(quán)值最小的樹(shù)作為一棵新樹(shù)的左、右子樹(shù),且置新樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)上根結(jié)點(diǎn)權(quán)值之和。(3)從F中刪除構(gòu)成新樹(shù)的那兩棵,同時(shí)把新樹(shù)加入F中。(4)重復(fù)第(2)和第(3)步,直到F中只含有一棵為止,此樹(shù)便為Huffman圖1哈夫曼樹(shù)5.2 計(jì)算平均碼長(zhǎng)、編碼效率、冗余度。平均碼長(zhǎng)為:_8K=Zp(xi)Ki=0.4X1+0.18X3+0.1X3+0.

9、1X4+0.07X4+0.06X4+i10.05X5+0.04X5=2.61(碼元/符號(hào))信源嫡為:nH(X)=、p(xi)logp(xi)=-(0.4log0.4+0.1810g0.18+0.1log0.1+i10.1log0.1+0.07+log0.07+0.0610g0.06+0.0510g0.05+0.0410g0.04)=2.55bit/符號(hào)信息傳輸速率為:r=HXl=2.55=0.977Et/碼元K2.61編碼效率為:H(X)2.55-T=-=0.977K2.61冗余度為:=1-=1-0.977=0.023六、哈夫曼編碼的實(shí)現(xiàn)6.1 軟件介紹VisualC+6.0,簡(jiǎn)稱VC或者VC

10、6.0,是微軟推出的一款C+編譯器,將高級(jí)語(yǔ)言”翻譯為機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。VisualC+是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。自1993年Microsoft公司推出VisualC+1.0后,隨著其新版本的不斷問(wèn)世,VisualC+已成為專業(yè)程序員進(jìn)行軟件開(kāi)發(fā)的首選工具。VisualC+6.0由Microsoft開(kāi)發(fā),它不僅是一個(gè)C+編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境(integrateddevelopmentenvironment,IDE)。VisualC+6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lassWizar

11、d等開(kāi)發(fā)工具。這些組件通過(guò)一個(gè)名為DeveloperStudio的組件集成為和諧的開(kāi)發(fā)環(huán)境。Microsoft的主力軟件產(chǎn)品。VisualC+是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。VisualC+6.0以擁有語(yǔ)法高亮”,自動(dòng)編譯功能以及高級(jí)除錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件(stdafx.h)、最小重建功能及累加連結(jié)(link)著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。(1) DeveloperStudio這是一個(gè)集成開(kāi)發(fā)環(huán)境,我們?nèi)粘9?/p>

12、作的99%都是在它上面完成的,再加上它的標(biāo)題赫然寫著“MicrosoftVisualC+,所以很多人理所當(dāng)然的認(rèn)為,那就是VisualC+了。其實(shí)不然,雖然DeveloperStudio提供了一個(gè)很好的編輯器和很多Wizard,但實(shí)際上它沒(méi)有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會(huì)介紹。我們也知道,DeveloperStudio并不是專門用于VC的,它也同樣用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。所以不要把DeveloperStudio當(dāng)成VisualC+,它充其量只是VisualC+的一個(gè)殼子而已。這一點(diǎn)請(qǐng)切記!(2) MFC從理論上來(lái)講,MFC

13、也不是專用于VisualC+,BorlandC+,C+Builder和SymantecC+同樣可以處理MFC。同時(shí),用VisualC+編寫代碼也并不意味著一定要用MFC,只要愿意,用VisualC+來(lái)編寫SDK程序,或者使用STL,ATL,一樣沒(méi)有限制。不過(guò),VisualC+本來(lái)就是為MFC打造的,VisualC+中的許多特征和語(yǔ)言擴(kuò)展也是為MFC而設(shè)計(jì)的,所以用VisualC+而不用MFC就等于拋棄了VisualC+中很大的一部分功能。但是,VisualC+也不等于MFC。(3) PlatformSDK這才是VisualC+和整個(gè)VisualStudio的精華和靈魂,雖然我們很少能直接接觸到

14、它。大致說(shuō)來(lái),PlatformSDK是以MicrosoftC/C+編譯器為核心(不是VisualC+,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說(shuō)到DeveloperStudio沒(méi)有編譯程序的功能,那么這項(xiàng)工作是由誰(shuí)來(lái)完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構(gòu)成VisualStudio的基石。6.2 編程/*哈夫曼編碼*#include#include#include#include#include#includeusingnamespacestd;structHuffman_InformationSourcecharInformati

15、onSign10;doubleProbability;charCode10;intCodeLength;structHuffNodecharInformationSign10;doubleProbabilityHuffNode*LeftSubtree,*middleSubtree,*RightSubtree,*Next;charCode10intCodeLengthclassCHuffman_2public:CHuffman_2()ISNumber=0AvageCodeLength=0.0InformationRate=0.0;CodeEfficiency=0.0Redundancy=0.0C

16、Huffman_2()DestroyBTree(HuffTree);voidHuffman_Input();voidHuffman_Sort();voidHuffman_Tree();voidHuffman_Coding();voidHuffman_CodeAnalyzing();voidHuffman_Display();voidDestroyBTree(HuffNode*TreePointer);private:vectorISarray;intISNumber;doubleAvageCodeLengthdoubleInformationRate;doubleCodeEfficiencyH

17、uffNode*HuffTree;private:voidHuffman_Code(HuffNode*TreePointer);;/輸入信源信息voidCHuffman_2:Huffman_Input()(Huffman_InformationSourcetemp1=x1,0.40,”,0;ISarray.push_back(temp1);Huffman_InformationSourcetemp2=x2,0.18,”,0;ISarray.push_back(temp2);Huffman_InformationSourcetemp3=x3,0.10,”,0;ISarray.push_back(

18、temp3);Huffman_InformationSourcetemp4=x4,0.10,”,0;ISarray.push_back(temp4);Huffman_InformationSourcetemp5=x5,0.07,”,0;ISarray.push_back(temp5);Huffman_InformationSourcetemp6=x6,0.06,0;ISarray.push_back(temp6);Huffman_InformationSourcetemp7=x7,0.05,0;ISarray.push_back(temp7);Huffman_InformationSource

19、temp8=x8,0.04,”,0;ISarray.push_back(temp8);ISNumber=ISarray.size();/按概率從大到小”排序voidCHuffman_2二Huffman_Sort()Huffman_InformationSourcetemp;intI,j;for(i=0;iISNumber-1;i+)for(j=i+1;jISNumber;j+)if(ISarrayi.ProbabilityInformationSign,ISarray0.InformationSign);ptr1-Probability=ISarray0.Probability;strcpy(

20、ptr1-Code,ISarray0.Code);ptr1-LeftSubtree=NULL;ptr1-middleSubtree=NULL;ptr1-RightSubtree=NULL;ptr1-Next=NULL;HuffTree=ptr1;for(i=1;iInformationSign,ISarrayi.InformationSign);ptr2-Probability=ISarrayi.Probability;strcpy(ptr2-Code,ISarrayi.Code);ptr2-LeftSubtree=NULL;ptr2-middleSubtree=NULL;ptr2-Right

21、Subtree=NULL;ptr2-Next=ptr1;ptr1=ptr2;HuffTree=ptr1;intk;ints;k=ceil(double)(ISNumber-3)/(3-1);s=3+k*(3-1)-ISNumber;if(s=1)ptr2=ptr1-Next;ptr4=newHuffNode;strcpy(ptr4-InformationSign,*);ptr4-Probability=ptr1-Probability+ptr2-Probability;strcpy(ptr4-Code,);ptr4-LeftSubtree=NULL;ptr4-middleSubtree=ptr

22、1;ptr4-RightSubtree=ptr2;HuffTree=ptr2-Next;temp1=HuffTree;while(temp1&(ptr4-Probabilitytemp1-Probability)temp2=temp1;temp1=temp1-Next;ptr4-Next=temp1;if(temp1=HuffTree)HuffTree=ptr4;elsetemp2-Next=ptr4;ptr1=HuffTree;while(ptr1-Next)/合并概率最小的結(jié)點(diǎn)ptr2=ptr1-Next;ptr3=ptr2-Next;ptr4=newHuffNode;strcpy(ptr

23、4-InformationSign,*);ptr4-Probability=ptr1-Probability+ptr2-Probability+ptr3-Probability;strcpy(ptr4-Code,);ptr4-LeftSubtree=ptr1;ptr4-middleSubtree=ptr2;ptr4-RightSubtree=ptr3;HuffTree=ptr3-Next;temp1=HuffTree;while(temp1&(ptr4-Probabilitytemp1-Probability)(temp2=temp1;temp1=temp1-Next;ptr4-Next=te

24、mp1;if(temp1=HuffTree)HuffTree=ptr4;elsetemp2-Next=ptr4;ptr1=HuffTree;/釋放:ptr1=NULL;ptr2=NULL;ptr3=NULL;ptr4=NULL;temp1=NULL;temp2=NULL;strcpy(HuffTree-Code,);HuffTree-CodeLength=0;/生成哈夫曼碼voidCHuffman_2二Huffman_Code(HuffNode*TreePointer)(if(TreePointer=NULL)return;chartempstr10=;if(!TreePointer-Left

25、Subtree&!TreePointer-middleSubtree&!TreePointer-RightSubtree)for(inti=0;iInformationSign)=0)(strcpy(ISarrayi.Code,TreePointer-Code);ISarrayi.CodeLength=TreePointer-CodeLength;return;return;if(TreePointer-LeftSubtree)(strcpy(tempstr,TreePointer-Code);strcat(tempstr,2);strcpy(TreePointer-LeftSubtree-C

26、ode,tempstr);TreePointer-LeftSubtree-CodeLength=TreePointer-CodeLength+1;Huffman_Code(TreePointer-LeftSubtree);if(TreePointer-middleSubtree)(strcpy(tempstr,TreePointer-Code);strcat(tempstr,1);strcpy(TreePointer-middleSubtree-Code,tempstr);TreePointer-middleSubtree-CodeLength=TreePointer-CodeLength+1

27、;Huffman_Code(TreePointer-middleSubtree);if(TreePointer-RightSubtree)(strcpy(tempstr,TreePointer-Code);strcat(tempstr,0);strcpy(TreePointer-RightSubtree-Code,tempstr);TreePointer-RightSubtree-CodeLength=TreePointer-CodeLength+1;Huffman_Code(TreePointer-RightSubtree);voidCHuffman_2:Huffman_Coding()(H

28、uffman_Code(HuffTree);/編碼結(jié)果voidCHuffman_2:Huffman_CodeAnalyzing()(for(inti=0;iISNumber;i+)AvageCodeLength+=ISarrayi.Probability*ISarrayi.CodeLength;intL=1;intm=2;/InformationRate=AvageCodeLength/L*(log(m)/10g(2);doubleHx=0;for(intj=0;jISNumber;j+)Hx+=-ISarrayj.Probabi1ity*1og(ISarrayj.Probabi1ity)/1

29、og(2);CodeEfficiency=Hx/InformationRate;Redundancy=1-CodeEfficiency;voidCHuffman_2:Huffman_Display()(cout碼字:endl;for(inti=0;iISNumber;i+)(coutISarrayi.InformationSign:ISarrayi.Codeendl;coutendl;cout“平均碼長(zhǎng):AvageCodeLengthendlendl;cout編碼效率:CodeEfficiencyendlendl;cout冗余度:RedundancyendlLeftSubtree);Destr

30、oyBTree(TreePointer-middleSubtree);DestroyBTree(TreePointer-RightSubtree);deleteTreePointer;TreePointer=NULL;voidmain()(CHuffman_3YYY;YYY.Huffman_Input();YYY.Huffman_Sort();YYY.Huffman_Tree();YYY.Huffman_Coding();YYY.Huffman_CodeAnalyzing();YYY.Huffman_Display();6.3 運(yùn)行結(jié)果及分析m,C:DOCUMENTSANDSETTINGSAD

31、MINISTRATOR桌面.碼字;:iX2r001* X3iOil* X4*:OOOOX5:0100X6,:0101:00010* XW.:00011平均碼長(zhǎng),2.61編碼效率:0,977011冗余度,0.0229S9Pressanykeytocontinue-圖2運(yùn)行結(jié)果運(yùn)行結(jié)果分析:從運(yùn)行結(jié)果上可以看出,該結(jié)果與理論計(jì)算一致,并且可以看出哈夫曼編碼的特點(diǎn):(1)哈夫曼的編碼方法保證了概率大的符號(hào)對(duì)應(yīng)于短碼,概率小的符號(hào)對(duì)應(yīng)于長(zhǎng)碼,充分應(yīng)用了短碼。(2)縮減信源的最后兩個(gè)碼字總是最后一位不同,從而保證了哈夫曼編碼是即時(shí)碼。(3)每次縮減信源的最長(zhǎng)兩個(gè)碼字有相同的碼長(zhǎng)。這三個(gè)特點(diǎn)保證了所得的哈

32、夫曼碼一定是最佳碼。因此哈夫曼是一種應(yīng)用廣泛而有效的數(shù)據(jù)壓縮技術(shù)。利用哈夫曼編碼進(jìn)行通信可以大大提高信道利用率,加快信息傳輸速度,降低傳輸成本。數(shù)據(jù)壓縮的過(guò)程稱為編碼,解壓的過(guò)程稱為譯碼。進(jìn)行信息傳遞時(shí),發(fā)送端通過(guò)一個(gè)編碼系統(tǒng)對(duì)待傳數(shù)據(jù)(明文)預(yù)先編碼,而接受端將傳來(lái)的數(shù)據(jù)(密文)進(jìn)行譯碼。要求數(shù)據(jù)這樣一個(gè)簡(jiǎn)單的哈夫曼編碼譯碼器。在進(jìn)行哈夫曼編碼時(shí),為了得到碼方差最小的碼,應(yīng)使合并的信源符號(hào)位于縮減信源序列盡可能高的。七、體會(huì)及建議在這次課程設(shè)計(jì)中,通過(guò)對(duì)程序的編寫,調(diào)試和運(yùn)行,使我更好的掌握了哈夫曼樹(shù)等數(shù)據(jù)結(jié)構(gòu)方面的基本知識(shí)和各類基本程序問(wèn)題的解決方法,熟悉了各種調(diào)用的數(shù)據(jù)類型,在調(diào)試和運(yùn)行

33、過(guò)程中,加深我對(duì)程序運(yùn)行的環(huán)境了解和熟悉的程度,同時(shí)也提高了我對(duì)程序調(diào)試分析的能力和對(duì)錯(cuò)誤糾正的能力。這次信息論與編碼的程序設(shè)計(jì),對(duì)于我來(lái)說(shuō)是一個(gè)挑戰(zhàn)。我對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)在程序的設(shè)計(jì)中也有所體現(xiàn)。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)問(wèn)題、提出問(wèn)題、分析問(wèn)題和解決問(wèn)題的過(guò)程,鍛煉學(xué)生的邏輯思維能力和實(shí)踐能力,是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程。在整個(gè)課程程序中,我們充分應(yīng)用和調(diào)用各個(gè)程序模塊,從而部分實(shí)現(xiàn)了此次程序設(shè)計(jì)的所應(yīng)該有的功能。就是我在課程設(shè)計(jì)是比較成功的方面,而在這個(gè)過(guò)程中,讓我感覺(jué)收獲最大的就是我們都能利用這次課程設(shè)計(jì)學(xué)到很多我們?cè)谡n本上沒(méi)有的知識(shí),充分的發(fā)揮了我們的主動(dòng)性,使我們學(xué)會(huì)了自主學(xué)習(xí),和獨(dú)立解決問(wèn)題的能力。很多程序在結(jié)構(gòu)上是獨(dú)立的,但是本此設(shè)計(jì)的程序功能不是零散的,它有一個(gè)連接是的程序是一個(gè)整體,達(dá)到這種統(tǒng)一體十分重要,因?yàn)檫@個(gè)輸出連接是貫穿始終的。通過(guò)翻閱相關(guān)書籍,在網(wǎng)上查詢資料學(xué)習(xí)有關(guān)哈夫曼編碼的實(shí)現(xiàn)過(guò)程,我實(shí)在是獲益匪淺,更加深刻的感覺(jué)到哈夫曼編碼能夠大大提高通信的效率,對(duì)于我們通信工程專業(yè)來(lái)說(shuō)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論