哈夫曼編碼及Matlab實現_第1頁
哈夫曼編碼及Matlab實現_第2頁
哈夫曼編碼及Matlab實現_第3頁
哈夫曼編碼及Matlab實現_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上哈夫曼編碼及Matlab實現 哈夫曼編碼是一種所得碼字是異前置的變長碼,其平均碼長最短,被稱為最佳變長碼,也稱為哈夫曼編碼。 其具體編碼方法如下: (1)將信源信息(符號)按概率大小排隊; (2)從最小概率的兩個消息開始編碼,并給予一定的編碼規則,如小概率的下支路編為1(或0),大概率的上支路變為0(或1),若兩者概率相等,仍是下支路為1上支路為0;(3)將已經編碼的兩個消息對應概率合并,并重新按概率大小排隊,重復步驟(2);(4)重復步驟(3),直至合并概率歸一為止;(5)變成的變長碼是按后出先編方式,即從概率歸一的樹根沿編碼路線逆行至對應的消息。實驗內容:給定離散

2、信源:對其進行哈夫曼編碼,其理論結果如下:消息(U)概率(p)編碼(C)0.20 0.20 0.26 0.35 0.39 0.61 1.0 0.19 0.20 0.26 0.35 0.39 0.18 0.19 0.20 0.26 0.17 0.18 0.19 0.15 0.17 0.11100.19110.180000.170010.150100.1001100.010111專心-專注-專業哈夫曼編碼Matlab代碼:p=0.2,0.19,0.18,0.17,0.15,0.1,0.01;p=sort(p,'descend');%降序排列H=sum(-p.*log2(p);%求得

3、信息熵n=length(p);%離散信源長度q=p;m=zeros(n-1,n);for i=1:n-1%對第一行進行編碼 q,l=sort(q); m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1;endfor i=1:n-1 c(i,:)=blanks(n*n);endc(n-1,n)='1'c(n-1,2*n)='0'for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1). -(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n

4、)='1'%在支路的第一個元素最后補1 c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)='0'%在支路的第一個元素最后補0 for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,. n*(find(m(n-i+1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1);%分配碼字 endendfor i=1:n h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n); ll(i)=length(find(abs(h(i,:)=32);%計算每一個哈夫曼編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論