信息論實(shí)驗(yàn)報(bào)告2信源編碼_第1頁(yè)
信息論實(shí)驗(yàn)報(bào)告2信源編碼_第2頁(yè)
信息論實(shí)驗(yàn)報(bào)告2信源編碼_第3頁(yè)
已閱讀5頁(yè),還剩4頁(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、遼寧工程技術(shù)大學(xué)上機(jī)實(shí)驗(yàn)報(bào)告成績(jī)實(shí)驗(yàn)名稱信源編碼院系姓名實(shí)驗(yàn)?zāi)康暮?jiǎn)述本次實(shí)驗(yàn)?zāi)康模?、理解并掌握香農(nóng)編碼2、理解并掌握費(fèi)諾編碼3、理解并掌握霍夫曼編碼實(shí)驗(yàn)準(zhǔn)備你為本次實(shí)驗(yàn)做了哪些準(zhǔn)備:認(rèn)真閱讀信息論教材,熟悉三種編碼的原理以及相應(yīng)的MATLAB函數(shù)指令實(shí)驗(yàn) 進(jìn)度本次共有6個(gè)練習(xí),完成 6實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)的收獲、體會(huì)、經(jīng)驗(yàn)、問(wèn)題和教訓(xùn):1、香農(nóng)編碼 Matlab源碼fun cti on W,L,q=sha nnon(p)if (le ngth(fi nd(p<=0) =0)error('Not a prob.vector, negative comp onen t'); e

2、ndif (abs(sum(p)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1'); end n=len gth(p); x=1: n;p,x=array(p,x);% 1)排序l=ceil(-log2(p); % 2)計(jì)算代碼組長(zhǎng)度1P(1)=0; n=le ngth(p);%3)計(jì)算累加概率 P for i=2:n P(i)=P(i_1)+p(i_1); endfor i=1: n % 4)求得二進(jìn)制代碼組Wfor j=1:l(i)temp(i,j)=floor(P(i)*2); P(

3、i)=P(i)*2-temp(i,j); endendfor i=1: nfor j=1:l(i)if (temp(i,j)=O); W(i,j)=48;else W(i,j)=49; endendendL=sum(p.*l); %計(jì)算平均碼字長(zhǎng)度 H=e ntropy(p,2); %計(jì)算信源熵q=H/L; % 計(jì)算編碼效率for i=1: n Bi=i; endn, m=size(W);TEMP=32*o nes( n,6);W=W,TEMP;W=W; n,m=size(W);W=resh ape(W,1, n*m);W=spri ntf('%s', W);s0='很

4、好!輸入正確,編碼結(jié)果如下:'s仁'Shannon 編碼所得碼字 W:'s2='Shannon編碼平均碼字長(zhǎng)度 L:' s3='Shannon編碼的編碼效率 q:'disp(sO);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);fun cti on H=en tropy(P,r)if (le ngth(fi nd(P<=0)=0) %判斷是否符合概率分布條件error('Not a prob.vector, negative comp onen t

5、9;); endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1'); endH=(sum(-P.*log2(P)/(log2(r)+eps);2、香農(nóng)編碼數(shù)值試驗(yàn)算例單符號(hào)離散無(wú)記憶信源X =a1,a2,a3,a4,a5, a6p( X)0.25,0.25,0.2,0.15,0.1,0.05p=0.25,0.25,0.2,0.15,0.1,0.05;W,L,q=sha nnon(p)很好!輸入正確,編碼結(jié)果如下:Sha nnon編碼所得碼字 W:12345600

6、 01 100 101 1101 11110Sha nnon編碼平均碼字長(zhǎng)度L:2.7000Sha nnon編碼的編碼效率 q:0.8975W =00 01 100 101 1101 11110L =2.7000q =0.89753、費(fèi)諾編碼 Matlab源碼(1)編寫(xiě) M文件 compare.mfun ctio nn ext_P,code _nu m, next_i ndex=compare(curre nt_P,curre nt_i ndex) n=len gth(curre nt_P);add(1)=curre nt_P(1);for i=2:n % 1)求概率的依次累加和add(i)=

7、0; add(i)=add(i-1)+curre nt_P(i); ends=add( n); % 2)求概率和最接近的兩小組for i=1: n temp(i)=abs(s-2*add(i); endc,k=mi n( temp);if (curre nt_i ndex<=k)n ext_ in dex=curre nt_in dex; code_ num=48;next_P=curre nt_P(1:k);elsen ext_ in dex=curre nt_in dex-k; code_ num=49;n ext_P=curre nt_P(k+1): n); end編寫(xiě)M文件fan

8、o.mfun ctio n W,L ,q=fa no(P)if (len gth(fi nd(P<=0) =0)error('Not a prob.vector, negative comp onen t'); endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1') endn=length(P); x=1:n;% 1)排序P,x=array(P,x);for i=1: ncurre nt_i ndex=i;j=1;curre nt_P=P

9、;while 1n ext_P,code_ nu m, next_i ndex=compare(curre nt_P,curre nt_i ndex);curre nt_i ndex=n ext_i ndex;curre nt_P=n ext_P;W(i,j)=code nu m; j=j+1;if (le ngth(curre nt_P)=1) break; endl(i)=length(find(abs(W(i,:) =0);end %L=sum(P.*l); % 計(jì)算平均碼字長(zhǎng)度H=e ntropy(P,2); %計(jì)算信源熵q=H/L; %計(jì)算編碼效率for i=1: n Bi=i; e

10、nd得到各碼字的長(zhǎng)度n, m=size(W);TEMP=32*o nes( n, 5);W=W,TEMP;W=W;n, m=size(W);W=reshape(W,1, n*m);W=spri ntf('%s', W);s0='很好!輸入正確,編碼結(jié)果如下:;s1='Fano編碼所得碼字 W:'s2='Fano編碼平均碼字長(zhǎng)度 L:'s3='Fano編碼的編碼效率disp(sO);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);fun cti on H=en t

11、ropy(P,r)if (le ngth(fi nd(P<=0)=0)error('Not a prob.vector, negative comp onen t'); endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1'); endH=(sum(-P.*log2(P)/(log2(r)+eps);4、費(fèi)諾編碼數(shù)值試驗(yàn)算例 單符號(hào)離散無(wú)記憶信源a1,a2,a3,p( X)1/4,1/4,1/8,P=1/4,1/4,1/8,1/8,1/16

12、,1/16,1/16,1/16;W,L ,q=fa no(P)很好!輸入正確,編碼結(jié)果如下:Fano編碼所得碼字W:123400 01 100 101Fano編碼平均碼字長(zhǎng)度2.7500561100L:Fano編碼的編碼效率 q:1.000000 01 100 101 1100a4,a5,1/8,811011101q:'a6,1/16, 1/16,1110 11111110 1111a7,a81/16,1/162.7500q =1.00005、霍夫曼編碼 Matlab源碼(1)編寫(xiě) M文件 huffman.mfun ctio n W,L ,q=huffma n(P)if (len gt

13、h(fi nd(P<=0) =0)error('Not a prob.vector, negative comp onen t'); endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1') endn=le ngth(P); %計(jì)算輸入兀素個(gè)數(shù)p=P; mark=zeros( n-1, n);% mark為n-1行、n列矩陣,用來(lái)記錄每行最小兩概率疊加后概率排列次序% 1)確定概率大小值的排列,得到mark矩陣。for i=1: n-1p,

14、num=sort(p); mark(i,:)=num(1:n_i+1),zeros(1,i_1);p=p(1)+p(2),p(3:n),1; end% 2)生成一個(gè)n-1行、n1(n x n)列矩陣table,每行可看做n個(gè)段,%每段長(zhǎng)為n,記錄一個(gè)碼子(每個(gè)碼子的長(zhǎng)度不會(huì)超過(guò)n)。for i=1: n-1 table(i,:)=bla nks( n*n); end% 3)計(jì)算各個(gè)元素碼字,循環(huán) n-2次,決定矩陣table%從倒數(shù)第二行開(kāi)始到第一行的每段的碼字值,到編碼表格tabletable( n-1, n)='1'table( n-1,2* n)='0'f

15、or i=2: n-1table( n-i,1: n-1)=table (n-i+1, n*(fi nd(mark( n-i+1,:)=1).-(n-2):n*(find(mark(n-i+1,:)=1); %按 mark 的記錄依次賦值table( n-i, n)='1'table( n-i, n+1:2* n-1)=table( n-i,1: n-1);table (n-i,2* n)='0' endfor j=1:i-1table (n-i,(j+1)* n+1:(j+2)* n)=table( n-i+1,.n*(find(mark(n-i+1,:)=j

16、+1)-1)+1:n*find(mark(n-i+1,:)=j+1); end% 4)得到編碼后的碼字for i=1: nW(i,1: n)=table(1, n*(fi nd(mark(1,:)=i)-1)+1:fi nd(mark(1,:)=i)* n);I(i)=length(find(abs(W(i,:) =32); endL=sum(P.*l); %計(jì)算平均碼字長(zhǎng)度H=e ntropy(P,2); %計(jì)算信源熵q=H/L; %計(jì)算編碼效率for i=1: n Bi=i; endm,n =size(W);TEMP=bla nks(m);W=W,TEMP',TEMP',T

17、EMP'm,n =size(W);W=reshape(W,1,m* n);s0='很好!輸入正確,編碼結(jié)果如下:'s仁'Huffman 編碼所得碼字 W:'s2='Huffman編碼平均碼字長(zhǎng)度 L:' s3='Huffman編碼的編碼效率 q:'disp(sO);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);fun cti on H=en tropy(P,r)if (len gth(fi nd(P<=0)=0)error('Not a

18、prob.vector, negative comp onen t'); endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1'); endH=(sum(-P.*log2(P)/(log2(r)+eps);(2)編寫(xiě) M文件 huffman_better.mfun ctio n W丄,V,q=huffman_better(P)if (len gth(fi nd(P<=0) =0)error('Not a prob.vector, negat

19、ive comp onen t');e ndif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,comp onent do not add up to 1') endn=len gth(P);p=P; mark=zeros( n-1, n); t=1;for i=1: n-1p,n um-sort(p); %對(duì)輸入兀素排序并紀(jì)錄if (i=1)if (coun t=0)k-max(a(t,:);for s-co un t:-1:1num(k-s)= num(k-s+1); endnu m(k)-1;endt-t+1;

20、endmark(i,:)= nu m(1: n-i+1),zeros(1,i-1);p=p(1)+p(2),p(3:n ),1;cou nt=O; %用于計(jì)數(shù)for j=2: n-iif (p(1)=p(j) %判斷p中是否有與求和后的新項(xiàng)相等的項(xiàng)coun t=co un t+1; a(t,co un t)=j;endendend% 2)生成一個(gè)n-1行、n1(n x n)列矩陣table,每行可看做n個(gè)段,%每段長(zhǎng)為n,記錄一個(gè)碼字(每個(gè)碼字的長(zhǎng)度不會(huì)超過(guò)n)。for i=1: n-1 table(i,:)=bla nks(n*n); end% 3)計(jì)算各個(gè)元素碼字,循環(huán)n-2次,決定矩陣t

21、able%從倒數(shù)第二行開(kāi)始到第一行的每段的碼字值,到編碼表格tabletable(n-1,n)='1' table(n-1,2*n)='0'for i=2: n-1table( n-i,1: n-1)=table( n-i+1, n*(fi nd(mark( n-i+1,:)=1).-(n-2):n*(find(mark(n-i+1,:)=1); %按 mark 的記錄依次賦值table( n-i, n)='1'table (n-i, n+1:2* n-1)=table( n-i,1: n-1);table( n-i,2* n)='0'for j=1:i-1table( n-i,(j+1)* n+1:(j+2)* n)=table( n-i+1,.n*(find(mark(n-i+1,:)=j+1)-1)+1:n*find(mark(n-i+1,:)=j+1); endend% 4)得到編碼后的碼字for i=1: nW(i,1: n)=table(1, n*(fi nd(mark(1,:)=i

溫馨提示

  • 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)論