欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: MATLAB費諾編碼實驗報告與源碼 [打印本頁]

作者: April112    時間: 2018-6-13 12:34
標題: MATLAB費諾編碼實驗報告與源碼
實驗三 費諾編碼
一、實驗目的和任務
二、實驗原理介紹
給定某個信源符號的概率分布,通過以下的步驟進行費諾編碼
1、信源符號按概率從大到小排列;
2、將依次排列的信源符號按概率值分為兩大組,使兩個組的概率之和近似相同,并對各組賦予一個二進制碼元“0”和“1”。
3、將每一大組的信源符號再分為兩組,使劃分后的兩個組的概率之和近似相同,并對各組賦予一個二進制符號“0”和“1”。
4、如此重復,直至每個組只剩下一個信源符號為止。
5、信源符號所對應的碼字即為費諾碼。            
三、實驗設備介紹
1、計算機
2、編程軟件MATLAB6.5以上

四、實驗內容和步驟

編程如下;
  1. A=[0.4,0.3,0.1,0.09,0.07,0.04];
  2. A=fliplr(sort(A));%降序排列
  3. [m,n]=size(A);
  4. for i=1:n
  5. B(i,1)=A(i);%生成B的第1列
  6. end
  7. %生成B第2列的元素
  8. a=sum(B(:,1))/2;
  9. for k=1:n-1
  10. if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a)
  11. break;
  12. end
  13. end
  14. for i=1:n%生成B第2列的元素
  15. if i<=k
  16. B(i,2)=0;
  17. else
  18. B(i,2)=1;
  19. end
  20. end
  21. %生成第一次編碼的結果
  22. END=B(:,2)';
  23. END=sym(END);
  24. %生成第3列及以后幾列的各元素
  25. j=3;
  26. while (j~=0)
  27. p=1;
  28. while(p<=n)
  29. x=B(p,j-1);
  30. for q=p:n
  31. if x==-1
  32. break;
  33. else
  34. if B(q,j-1)==x
  35. y=1;
  36. continue;
  37. else
  38. y=0;
  39. break;
  40. end
  41. end
  42. end
  43. if y==1
  44. q=q+1;
  45. end
  46. if q==p|q-p==1
  47. B(p,j)=-1;
  48. else
  49. if q-p==2
  50. B(p,j)=0;
  51. END(p)=[char(END(p)),'0'];
  52. B(q-1,j)=1;
  53. END(q-1)=[char(END(q-1)),'1'];
  54. else
  55. a=sum(B(p:q-1,1))/2;
  56. for k=p:q-2
  57. if abs(sum(B(p:k,1))-a)<=abs(sum(B(p:k+1,1))-a);
  58. break;
  59. end
  60. end
  61. for i=p:q-1
  62. if i<=k
  63. B(i,j)=0;
  64. END(i)=[char(END(i)),'0'];
  65. else
  66. B(i,j)=1;
  67. END(i)=[char(END(i)),'1'];
  68. end
  69. end
  70. end
  71. end
  72. p=q;
  73. end
  74. C=B(:,j);
  75. D=find(C==-1);
  76. [e,f]=size(D);
  77. if e==n
  78. j=0;
  79. else
  80. j=j+1;
  81. end
  82. end
  83. B
  84. A
  85. END
  86. for i=1:n
  87. [u,v]=size(char(END(i)));
  88. L(i)=v;
  89. end
  90. avlen=sum(L.*A)
  91. H=-sum(A.*log2(A))%輸出信息熵
  92. p=H/avlen %輸出編碼效率
復制代碼


結果如圖:
通過這次費諾碼編程的實驗,使我學到了不少實用的知識,實踐與課堂知識相結合使學習知識得以運用,知識點學的更透徹了。更重要的是,做實驗的過程,思考問題的方法,這與做其他的實驗是通用的,真正使我們受益匪淺。

完整的Word格式文檔51黑下載地址:
信息論編碼實驗5416546464184168418541(2).doc (55.54 KB, 下載次數: 14)



作者: 一毛零logo    時間: 2019-5-15 17:48
好像有bug,輸入序列為[0.2,0.2,0.2,0.2,0.2]或[ones(1,10)*0.1]這樣的序列時進入死循環。。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1