信息編碼實驗報告_第1頁
信息編碼實驗報告_第2頁
信息編碼實驗報告_第3頁
信息編碼實驗報告_第4頁
信息編碼實驗報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上信息論與編碼技術(shù)實驗報告 實 驗 題 目 香濃編碼 學(xué)生專業(yè)班級 信息與計算科學(xué) 1001 學(xué)生姓名(學(xué)號) 曹雪萍() 指 導(dǎo) 教 師 吳慧 完 成 時 間 2013年5月18日 2013 年 5 月 18 日 信息論與編碼技術(shù)實驗報告 實 驗 題 目 Huffman編碼軟件實現(xiàn) 學(xué)生專業(yè)班級 信息與計算科學(xué) 1001 學(xué)生姓名(學(xué)號) 曹雪萍() 指 導(dǎo) 教 師 吳慧 完 成 時 間 2013年5月19日 2013 年 5 月 19 日 實驗一香農(nóng)編碼的實驗報告一 、實驗?zāi)康?. 了解香農(nóng)編碼的基本原理及其特點;2. 熟悉掌握香農(nóng)編碼的方法和步驟;3. 掌握C語言

2、或者Matlab編寫香農(nóng)編碼的程序。二、實驗要求對于給定的信源的概率分布,按照香農(nóng)編碼的方法進行計算機實現(xiàn).三、實驗原理給定某個信源符號的概率分布,通過以下的步驟進行香農(nóng)編碼1信源符號按概率從大到小排列2. 對信源符號求累加概率,表達式: Gi=Gi-1+p(xi)3. 求自信息量,確定碼字長度。自信息量I(xi)=-log(p(xi);碼字長度取大于等于自信息量的最小整數(shù)。4. 將累加概率用二進制表示,并取小數(shù)點后碼字的長度的碼 。四、實驗內(nèi)容離散無記憶信源符號S的概率分布:S P(S) = 0.20 0.19 0.18 0.17 0.15 0.10 0.01對離散無記憶信源分布S進行香農(nóng)編

3、碼1.畫出程序設(shè)計的流程圖,開始計算平均碼長按概率分布大小對信源排序判斷概率和S是否等于1輸入對應(yīng)符號的概率P(i)輸入信源符號的個數(shù) 計算編碼效率計算累加概率計算自信息量將累加概率轉(zhuǎn)化為二進制碼字輸出累加概率,碼長,碼字,自信息量,平均碼長,編碼效率結(jié)束2.寫出程序代碼,N=input(N=); %輸入信源符號的個數(shù)s=0;l=0;H=0;for i=1:N p(i)=input(p=); %輸入信源符號概率分布矢量,p(i)0, error(不符合概率分布)end for i=1:N-1 for j=i+1:N if p(i)p(j) m=p(j); p(j)=p(i); p(i)=m;

4、end endend %按概率分布大小對信源排序for i=1:N a=-log2(p(i); if mod(a,1)=0 w=a; else w=fix(a+1); end %計算各信源符號的碼長 l=l+p(i)*w; %計算平均碼長end l=l;n=H/l; %計算編碼效率P(1)=0for i=2:N P(i)=0; for j=1:i-1 P(i)=P(i)+p(j); endend %計算累加概率for i=1:N for j=1:w W(i,j)=fix(P(i)*2); P(i)=P(i)*2-fix(P(i)*2); endend %將累加概率轉(zhuǎn)化為L(i)位二進制碼字di

5、sp(W) %顯示碼字disp(l) %顯示平均碼長disp(n) %顯示編碼效率disp(I) %顯示自信息量3.寫出在調(diào)試過程中出現(xiàn)的問題 ,問題1:自信量程序不會編寫問題2:累加概率時注意P(1)=0問題3:程序運行時要依次輸入各個符號概率4.對實驗的結(jié)果進行分析由程序運行結(jié)果,得2.34 2.41 2.48 2.56 2.74 3.34 6.66所以我們得到每個信源符號的自信息量為I(s1)=2.34 I(s2)=2.41 I(s3)=2.48 I(s4)=2.56 I(s5)=2.74 I(s6)=3.34 I(s7)=6.66根據(jù)公式,我們得到每個信源符號的碼長為l1=3 l2=3

6、 l3=3 l4=3 l5=3 l6=4 l7=7由程序運行結(jié)果, 0 0 0 0 0 0 00 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0我們得到每個信源符號的為對應(yīng)的二進制數(shù)為:G1=0. G2=0. G3=0. G4=0. G5=0. G6=0. G7=0. 所以我們得到每個信源符號的碼字為:S1=000 s2=001 s3=011 s4=100 s5=101 s6=1110 s7=平均碼長為:3.14編碼效率為:0.831五、實驗結(jié)論與心得此次實驗讓我認識和熟悉了及步

7、驟,對MATLAB軟件也有更加深刻的掌握,會用它求某個符號信源的香農(nóng)編碼程序算法,對我的實驗?zāi)芰τ兴岣?。Huffman編碼軟件實現(xiàn)實驗報告一、實驗?zāi)康?. 進一步熟悉Huffman編碼過程;2. 掌握Matlab程序的設(shè)計和調(diào)試技術(shù)。二、實驗要求1. 輸入:信源符號個數(shù)r、信源的概率分布P;2. 輸出:每個信源符號對應(yīng)的Huffman編碼的碼字,編碼效率。三、實驗原理:1二進制Huffman編碼的基本原理設(shè)信源s=其中對應(yīng)的概率分布為P()=則其編碼步驟如下:(1) 將q個信源符號按概率遞減的方式排列。(2) 用0、1碼符號分別表示概率最小的兩個信源符號,并將這兩個概率最小的信源符號合并成一

8、個新的符號,從而的得到的只含q-1個符號的新信源,稱為信源的縮減信源(3) 將縮減信源中的符號仍按概率大小以遞減次序排列,重復(fù)步驟(2)(4) 重復(fù)(1)(2)(3)三步驟,直至縮減信源只剩下兩個符號為止,將這最后兩個符號分別用0、1碼字表示。 (5)從最后一級縮減信源開始,向前返回,得出各信源符號所對應(yīng)的碼符號序列,即為對應(yīng)信源符號的碼字。 2二進制Huffman編碼程序設(shè)計的原理(編碼步驟) (1)程序的輸入:以一維數(shù)組的形式輸入要進行Huffman編碼的信源符號的概率,在運行該程序前,顯示文字提示信息,提示所要輸入的概率矢量;然后對輸入的概率矢量進行合法性判斷,原則為:如果概率矢量中存在

9、小于0的項,則輸入不合法,提示重新輸入;如果概率矢量的求和大于1,則輸入也不合法,提示重新輸入。(2)Huffman編碼具體實現(xiàn)原理: 在輸入的概率矩陣p正確的前提條件下,對p進行排序,并用矩陣L記錄p排序之前各元素的順序,然后將排序后的概率數(shù)組p的前兩項,即概率最小的兩個數(shù)加和,得到新的一組概率序列,重復(fù)以上過程,最后得到一個記錄概率加和過程的矩陣p以及每次排序之前概率順序的矩陣a。新生成一個n-1行n列,并且每個元素含有n個字符的空白矩陣,然后進行Huffman編碼:將c矩陣的第n-1行的第一和第二個元素分別令為0和1(表示在編碼時,根節(jié)點之下的概率較小的元素后補0,概率較大的元素后補1,

10、后面的編碼都遵守這個原則)然后對n-i-1的第一、二個元素進行編碼,首先在矩陣a中第n-i行找到值為1所在的位置,然后在c矩陣中第n-i行中找到對應(yīng)位置的編碼(該編碼即為第n-i-1行第一、二個元素的根節(jié)點),則矩陣c的第n-i行的第一、二個元素的n-1的字符為以上求得的編碼值,根據(jù)之前的規(guī)則,第一個元素最后補0,第二個元素最后補1,則完成該行的第一二個元素的編碼,最后將該行的其他元素按照“矩陣c中第n-i行第j+1列的值等于對應(yīng)于a矩陣中第n-i+1行中值為j+1的前面一個元素的位置在c矩陣中的編碼值”的原則進行賦值,重復(fù)以上過程即可完成Huffman編碼。計算信源熵和平均碼長,其比值即為編

11、碼密碼效率。3.部分偽代碼:(1) 節(jié)點信息結(jié)構(gòu)體struct HuffNode int weight;/信源符號的概率 int parent;int lchild;int rchild;(2) 算法void Huffman(int weight, int n, HuffNode hn, HuffCode hc) for(i = 0; i != 2*n - 1; +i) /create Huffman Node,step 1for(i = 0; i != n-1; +i) /create Huffman Node, step 2for(j = 0; j != n+i; j+) if(hnj.w

12、eight min1 & hnj.parent = 0)else if(hnj.weight 0判別概率總和是否=1對概率數(shù)組q升序排序用0,1表示概率最小的兩個信源符號將數(shù)組q前兩項加和,得到新的概率序列判斷信源符號是否只剩兩個符號生成n-1行n列,每個元素含有n個字符的空白矩陣進行Huffman編碼,并完成碼字分配計算一個Huffman碼字的平均碼長計算信源熵和編碼效率結(jié)束2. 寫出Huffman編碼的源程序p=input(please input a number:) n=length(p);for i=1:n if p(i)0 fprintf(n The sum of the prob

13、abilities in huffman can more than 1!n); p=input(please input a number:) end q=p;a=zeros(n-1,n); %生成一個n-1行n列的數(shù)組for i=1:n-1 q,l=sort(q) a(i,:)=l(1:n-i+1),zeros(1,i-1) q=q(1)+q(2),q(3:n),1; end for i=1:n-1 c(i,1:n*n)=blanks(n*n); end c(n-1,n)=0; c(n-1,2*n)=1; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a

14、(n-i+1,:)=1)-(n-2):n*(find(a(n-i+1,:)=1) c(n-i,n)=0 c(n-i,n+1:2*n-1)=c(n-i,1:n-1) c(n-i,2*n)=1 for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)=j+1)-1)+1:n*find(a(n-i+1,:)=j+1) end end for i=1:n h(i,1:n)=c(1,n*(find(a(1,:)=i)-1)+1:find(a(1,:)=i)*n) ll(i)=length(find(abs(h(i,:)=32) end

15、 l=sum(p.*ll); fprintf(n huffman code:n);hhh=sum(p.*(-log2(p); fprintf(n the huffman effciency:n); t=hh/l3. 運行源程序后,實驗過程中的測試結(jié)果p = 0.32 0.22 0.18 0.16 0.08 0.04q = 0.04 0.08 0.16 0.18 0.22 0.32q = 0.12 0.16 0.18 0.22 0.32 1.00q = 0.18 0.22 0.28 0.32 1.00 1.00q = 0.28 0.32 0.40 1.00 1.00 1.00q= 0.40 0.

16、60 1.00 1.00 1.00 1.00ll = 2 4 2 2 3 4huffman code:h = 00 1001 01 11 101 1000the huffman effciency:t = 0.9801實驗結(jié)果分析信源 的碼字長度分別為 2 4 2 2 3 4 ;所對應(yīng)的碼字為 11 0110 10 00 010 0111 ;編碼效率為 0.9801。5、總結(jié)實驗過程遇到的問題及解決方法 1. 在實驗過程中,遇到以下幾個問題: 信源縮減不知怎么表示; 不知如何運用矩陣存儲對應(yīng)概率所對應(yīng)的位置; 起初忘記對輸入的各個概率以及概率之和進行判斷,導(dǎo)致的程序的不合理性與不可行性。2.

17、解決方法:通過查找資料和相關(guān)書籍,學(xué)習(xí)類似的哈夫曼編碼的程序的編寫,使得問題得到解決六、實驗心得通過此次試驗,使得我對Huffman編碼的編寫原理、基本步驟有了更加深刻的理解,此外,我還學(xué)到了有關(guān)MATLAB知識的運用,比如:一些特殊語句的應(yīng)用、矩陣存儲知識的應(yīng)用等等??傊?,我認為此次實驗還是比較成功的。同、收回房屋:1.承租人擅自將房屋轉(zhuǎn)讓或轉(zhuǎn)借的;登鸛雀樓唐代:王之渙白日依山盡,黃河入海流。欲窮千里目,更上一層樓。譯文及注釋譯文夕陽依傍著西山慢慢地沉沒, 滔滔黃河朝著東海洶涌奔流。若想把千里的風(fēng)光景物看夠, 那就要登上更高的一層城樓。注釋鸛雀樓:舊址在山西永濟縣,樓高三層,前對中條山,下臨

18、黃河。傳說常有鸛雀在此停留,故有此名。白日:太陽。依:依傍。盡:消失。 這句話是說太陽依傍山巒沉落。欲:想要得到某種東西或達到某種目的的愿望,但也有希望、想要的意思。窮:盡,使達到極點。千里目:眼界寬闊。更:替、換。(不是通常理解的“再”的意思)這首詩寫詩人在登高望遠中表現(xiàn)出來的不凡的胸襟抱負,反映了盛唐時期人們積極向上的進取精神。其中,前兩句寫所見?!鞍兹找郎奖M”寫遠景,寫山,寫的是登樓望見的景色,“黃河入海流”寫近景,寫水寫得景象壯觀,氣勢磅礴。這里,詩人運用極其樸素、極其淺顯的語言,既高度形象又高度概括地把進入廣大視野的萬里河山,收入短短十個字中;而后人在千載之下讀到這十個字時,也如臨其

19、地,如見其景,感到胸襟為之一開。首句寫遙望一輪落日向著樓前一望無際、連綿起伏的群山西沉,在視野的盡頭冉冉而沒。這是天空景、遠方景、西望景。次句寫目送流經(jīng)樓前下方的黃河奔騰咆哮、滾滾南來,又在遠處折而東向,流歸大海。這是由地面望到天邊,由近望到遠,由西望到東。這兩句詩合起來,就把上下、遠近、東西的景物,全都容納進詩筆之下,使畫面顯得特別寬廣,特別遼遠。就次句詩而言,詩人身在鸛雀樓上,不可能望見黃河入海,句中寫的是詩人目送黃河遠去天邊而產(chǎn)生的意中景,是把當前景與意中景溶合為一的寫法。這樣寫,更增加了畫面的廣度和深度。而稱太陽為“白日”,這是寫實的筆調(diào)。落日銜山,云遮霧障,那本已減弱的太陽的光輝,此

20、時顯得更加暗淡,所以詩人直接觀察到“白日”的奇景。至于“黃河”。當然也是寫實。它宛若一條金色的飄帶,飛舞于層巒疊嶂之間。詩人眼前所呈現(xiàn)的,是一幅溢光流彩、金碧交輝的壯麗圖畫。這幅圖畫還處于瞬息多變的動態(tài)之中。白日依山而盡,這僅僅是一個極短暫的過程;黃河向海而流,卻是一種永恒的運動。如果說這種景色很美,那么,它便是一種動態(tài)的美,充滿了無限生機的活潑的美。這不是所謂“定格”,不是被珍藏的化石或標本。讀者深深地為詩人的大手筆所折服。后兩句寫所想。“欲窮千里目”,寫詩人一種無止境探求的愿望,還想看得更遠,看到目力所能達到的地方,唯一的辦法就是要站得更高些,“更上一層樓”?!扒Ю铩薄耙粚印?,都是虛數(shù),是詩

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論