資源描述:
《算術編碼算法的Matlab實現.doc》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、實驗1算術編碼算法的Matlab實現實驗學時:2實驗類型:(演示、驗證、綜合、√設計、研究)實驗要求:(√必修、選修)一、實驗目的掌握算數編碼原理。二、實驗內容利用Matlab編寫程序實現算數編碼,包括:1、對文件符號進行概率統(tǒng)計,生成編碼表;2、對文件進行壓縮編碼;3、(選做)對文件進行解壓縮,比較原始數據和解壓后的數據之間是否有損耗。三、實驗儀器1、計算機一臺;2、Matlab仿真軟件。四、實驗原理算術編碼的編碼對象是一則消息或一個字符序列,其編碼思路是將該消息或字符序列表示成0和1之間的一個間隔(Interva
2、l)上的一個浮點小數。在進行算術編碼之前,需要對字符序列中每個字符的出現概率進行統(tǒng)計,根據各字符出現概率的大小,將每個字符映射到[0,1]區(qū)間上的某個子區(qū)間中。然后,再利用遞歸算法,將整個字符序列映射到[0,1]區(qū)間上的某個Interval中。在進行編碼時,只需從該Interval中任選一個小數,將其轉化為二進制數。符號序列越長,編碼表示它的Interval的間隔就越小,表示這一間隔所需的二進制位數就越多,編碼輸出的碼字就越長。五、實驗步驟對字符序列“state_tree”進行算術編碼的步驟如下:1、對文件符號“st
3、ate_tree”進行概率統(tǒng)計,生成編碼表;2、初始化時,被分割范圍的初始值是[0,1],即被分割范圍的下限為low=0,上限為high=1,該范圍的長度為range_length=high-low=1。1、對消息的第一字符s進行編碼,如果s的概率范圍的下限為Low=0.6,上限為High=0.7,則下一個被分割范圍的下限和上限分別為:next_low=low+range_length×Low=0+1×0.6=0.6;next_high=low+range_length×High=0+1×0.7=0.7;low=ne
4、xt_low=0.6,high=next_high=0.7;range_length=high-low=0.7-0.6=0.1;s將分割范圍從[0,1]變成了[0.6,0.7]。2、重復上述步驟,依次對字符t,a,t,e,_t,r,e,e進行編碼;3、編碼結束,將最終得到的編碼結果從一個十進制小數值轉化為二進制數,從而得到最終的編碼碼字。算術編碼算法的解碼過程步驟如下:1、將最終的算數編碼結果(十進制小數值)與之前得到的編碼表進行對比,確定與該數值對應的概率范圍,從而解碼出字符序列的第一個字母。2、利用公式(numb
5、er-range_low)/range=>number_next進行解碼,直到整個字符序列解碼完畢。其中number為字符序列的當前編碼,number_next為下一步解碼時的字符序列編碼。六、實驗報告1、對文件符號“state_tree”進行概率統(tǒng)計,得出編碼表;1、給出算數編碼(解碼可選)過程的Matlab代碼;3.給出Mablab程序的運行結果;