郭思夢+張祥林
【摘 要】通過MATLAB的圖形用戶界面對香農(nóng)編碼過程進行設(shè)計制作,完成要求如下:輸入任意符號文本,計算出每個符號的概率,同時計算出信源熵,通過香農(nóng)編碼的方法為每個符號進行編碼,并顯示在界面中,最后計算得出編碼效率。該方法使得操作過程更加方便,計算結(jié)果更加直觀。
【Abstract】The Shannon Coding process is designed by MATLAB graphical user interface,and the requirements are as follows: entering any symbolic text, calculating the probability of each symbol, and calculating the entropy of the source, using the method of Shannon Coding to encode for each symbol, and displaying them in the interface, finally , calculating the encoding efficiency. This method makes the operation process more convenient and the calculation results more intuitive.
【關(guān)鍵詞】香農(nóng)編碼;GUI;信源熵;編碼效率
【Keywords】 Shannon Coding; GUI; source entropy; coding efficiency
【中圖分類號】TN911 【文獻標志碼】A 【文章編號】1673-1069(2017)09-0157-02
1 引言
MATLAB中沒有專門用來計算香農(nóng)編碼的函數(shù),因此在編程計算中具有程序復雜、修改困難、不直觀等缺點。本文利用MATLAB圖形用戶界面的操作靈活及效果直觀的優(yōu)點,按照計算香農(nóng)編碼的具體流程,通過錄入用戶的鍵盤輸入,將符號概率、信源熵、香農(nóng)編碼及編碼效率依次顯示在圖形用戶界面上,該方法靈活直觀、方便對比。實現(xiàn)香農(nóng)編碼的流程圖如圖1所示。
2 香農(nóng)編碼的GUI設(shè)計
在通信系統(tǒng)中,通常要通過信源編碼來提高信息傳輸?shù)挠行?。香農(nóng)編碼是其中一種編碼方法,又稱可變長無失真信源編碼[1]。香農(nóng)編碼將原始信源符號轉(zhuǎn)化為新的碼符號,使碼符號盡量服從等概分布,從而每個碼符號所攜帶的信息量達到最大,進而可以用盡量少的碼符號傳輸信源信息[2]。
MATLAB的GUI(Graphical User Interfaces)是一個由坐標軸、按鈕、級聯(lián)菜單、動靜態(tài)文本等圖形對象組成的一個用戶與計算機交互的圖形窗口。用戶通過編寫程序,激活這些圖形對象,使計算機實現(xiàn)相應(yīng)的變化,以完成用戶需要的功能。比如,實現(xiàn)計算和圖像顯示等。該 GUI 界面使用了11個靜態(tài)文本、23個可編輯文本、4個按鈕。其中“輸入符號序列”、“q”、“w”、“e”等為靜態(tài)文本;“計算符號概率”、“香農(nóng)編碼”、“計算信源熵”、“編碼效率”為按鈕,用來實現(xiàn)程序的運行;其余模塊均為可編輯文本,用來實現(xiàn)數(shù)據(jù)的輸入與輸出。圖2是未點擊功能控件時的空GUI[3]。
3 香農(nóng)編碼的實現(xiàn)過程
在“輸入符號序列”右側(cè)的可編輯文本框中輸入任意符號序列,點擊“計算符號概率”按鈕,即可在“q”、“w”、“e”等字母的右側(cè)可編輯文本中顯示出對應(yīng)的符號概率,點擊“計算信源熵”按鈕,即可在右側(cè)可編輯文本框中顯示出信源熵的數(shù)值,點擊“香農(nóng)編碼”按鈕,相應(yīng)的碼字即會顯示在對應(yīng)的文本框中,最后點擊“計算編碼效率”按鈕,即可得出香農(nóng)編碼效率。
4 程序的編寫
程序的編寫需要分模塊來進行。
按照先后順序,首先需要對“輸入符號序列”右側(cè)的可編輯文本框進行程序的編寫,需要實現(xiàn)的功能是:接收計算機鍵盤輸入的符號序列,并將其保存為一個變量。
接下來是“計算符號概率”按鈕的程序的編寫。由公式:概率p=樣本數(shù)n/總體N,可知應(yīng)當首先統(tǒng)計每個符號出現(xiàn)的次數(shù)及符號序列的總長度,再進行除法運算即可得到每個符號的概率。
然后是計算信源熵。信源熵計算公式為:H(x)=-p(xi)logp(xi)。將該公式編入程序,即可實現(xiàn)信源熵的計算。
最重要也最復雜的一步是香農(nóng)編碼的程序編寫。香農(nóng)編碼的具體過程如下:
①將信源消息符號按其出現(xiàn)的概率大小依次排列為p1≥p2≥…≥pn。
②確定滿足下列不等式的整數(shù)碼長Ki為-lb(pi)≤Ki≤lb(pi)+1。
③為了編成唯一可譯碼,計算第i個消息的累加概率Pi=p(ak)。
④將累加概率Pi變換成二進制數(shù)。
⑤取Pi二進制數(shù)的小數(shù)點后Ki位即為該消息符號的二進制編碼。
5 結(jié)語
本文設(shè)計了一種基于MATLAB GUI的香農(nóng)編碼,將香農(nóng)編碼的具體步驟直觀化,通過用戶任意鍵入字符,即可計算出每個字符出現(xiàn)的概率,同時根據(jù)得到的信源熵計算香農(nóng)編碼及編碼效率,大大簡化了計算過程,提高了計算效率[4]。
【參考文獻】
【1】曹雪虹.信息論與編碼[M].北京:清華大學出版社,2009.
【2】邵軍花,劉玉紅,邸敬,等.香農(nóng)編碼的優(yōu)化算法研究[J].蘭州交通大學學報,2010,29(6):110-113.
【3】邱金蕙,王矞輝,李振全.基于Matlab/GUI的新型界面開發(fā)方式[J].河北工業(yè)科技,2008,25(4):233-235.
【4】余結(jié),王防修,胡迪,等.一種香農(nóng)編碼優(yōu)化算法的改進[J].武漢輕工大學學報,2015(2):83-86.endprint