2.利用程式huff_enc和huff_dec進行以下操作(在每種情況下,利用由被壓縮影象生成的碼本)。
(a)對sena,sensin和omaha影象進行編碼。
解:檔名
壓縮前大小
壓縮後大小
壓縮比sence
64k57k
0.89
sensin
64k61k
0.95
omaha
64k58k
0.91
4.乙個信源從符號集a=中選擇字母,概率為p(a1)=0.15,p(a2)=0.04,p(a3)=0.26,p(a4)=0.05,p(a5)=0.50
(a)計算這個信源的熵。
h=0.15*0.41+0.04*0.186+0.26*0.505+0.05*0.216+0.50*0.5=1.817
(b)求這個信源的霍夫曼碼。
解:根據題目的意思,畫出霍夫曼數,經分析的霍夫曼碼如下
a1:110;a2:1111;a3:10;a4:1110;a5:0
(c)求(b)中**的平均長度及其冗餘度。
平均長度i=0.5*1+0.26*2+0.15*3+(0.04+0.05)*4=1.83
所以冗餘度就是i-h=1.83-1.817=0.013
5.乙個符號集a=,其概率為p(a1)=0.1,p(a2)=0.3,p(a3)=0.25,p(a4)=0.35,使用以下 過程找出一種霍夫曼碼:
(a)本章概述的第一種過程;
shannon-fano編碼
演算法:以空碼開始;
計算所有符號的頻率/概率;
對所有符號集合劃分為兩個概率差異最小集合;
在第乙個集合的碼字前加「0「,在第二個集合的碼字前加」1「;
對劃分得到的兩個子集遞迴編碼,直到每個集合不能被再劃分;
根據以上演算法,得到這個題的編碼為
a1:010,a2:00;a3:01;a4:1
(b)最小方差過程。解釋著兩種霍夫曼碼的區別。
同(a)的演算法,只是選擇方差小的進行編碼,所以編碼為
a1=00 a2=10 a3=01 a4=11
兩種編碼的平均長度為:l=2
所以第一種的方差為:s1
2=(0.1+0.25)*(3-2)2+0.3*(2-2)2+0.35*(1-2)2=0.7
第二種的方差為:s2
2=(0.1+0.25+0.3+0.35)*(2-2)2=0
所以由上可知:根據最小方差過程:a1,a2,a3,a4的霍夫曼碼分別為:a1=00 a2=10 a3=01 a4=11
2. 參考書《資料壓縮導論(第4版)》page 30
6。在本書配套的資料集中有幾個影象和語音檔案。
(a)編寫一段程式,計算其中一些影象和語音檔案的一階熵。
以下的這都是一階熵:
earth.img是4.770801
omaha.img是6.942426
sena.img是6.834299
sensin.img是7.317944
gabe.raw是7.116338
berk.raw是7.151537
(b)選擇乙個影象檔案,並計算其二階熵。試解釋一階熵和二階熵之間的差別。
berk.raw的二階熵是6.705169
由第一題和第二題的結果發現,一階熵和二階熵的差別是一階熵與二階熵的差幾乎是0.5
(c)對於(b)中所用的影象檔案,計算其相鄰畫素之差的熵。試解釋你的發現。
berk.raw的差熵是8.978236
由一,二,三題的結果發現,差熵都比一階熵和二階熵都要大。
第二次作業
execise02 1.查詢85年以後出生的學生姓名 性別和出生日期 2.列表顯示所有可能的學生選課組合 學號 課程號 3.查詢1 2 4班中陳姓同學的資訊 4.查詢所有及格的學生姓名 所選課程名及所得分數 5.統計各門課程的及格人數 課程編號 課程名 及格人數 6.統計各門課程的總人數 及格人數和...
第二次作業
第一題 p1 1 遞迴寫法,效率低 include 1.寫乙個函式返回引數值為1的個數 比如 15 0000 1111 4個1 程式原型 int count one bits unsigned int value int fuc int x else return 0 void mainp1 p1 ...
第二次作業
檔名稱 516.cpp 作 者 闕文榮 完成日期 2016 年 3 月 11 日 版 本 號 v1.1 對任務及求解方法的描述部分 用while語句控制輸出 輸入描述 略 問題描述 現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。他想買這套房子,多大的 率能夠忍受...