宋麗麗,秦 艷
(內蒙古工業(yè)大學信息工程學院,內蒙古呼和浩特 010080)
信源編碼是“信息論與編碼課程”的重要內容,為使學生更好的理解與掌握,本文基于Matlab開發(fā)的信源編碼實驗系統(tǒng),實現(xiàn)了離散信源編碼方法中的香農(nóng)編碼、費諾編碼和Huffman編碼以及連續(xù)信源編碼方法中的均勻量化編碼與非均勻量化編碼。利用Matlab中GUI圖形用戶界面相關知識設計實現(xiàn)Matlab信源編碼的實驗圖形界面,只需簡單操作文本輸入框和按鈕,就可直觀便捷地實現(xiàn)各種編碼方法。
在數(shù)字通信系統(tǒng)中,信源編碼技術可以提高數(shù)字信號傳輸?shù)挠行?。無失真信源編碼允許把等長的消息變換成變長的消息,這樣可使平均碼長達到最短,提高編碼效率。目前最常用的方法就是香農(nóng)編碼、費諾編碼和Huffman編碼。限失真信源編碼即連續(xù)信源編碼在時間和取值上都是連續(xù)的,所以要先經(jīng)過抽樣抽取一些可以代表整個信號的離散點,使信號在時間上離散。再經(jīng)過均勻量化或非均勻量化使信號在取值上也離散,成為離散的數(shù)字信號。因為量化方式的不同也就產(chǎn)生不同的編碼方法:標量量化編碼和矢量量化編碼。標量量化編碼又包括均勻量化編碼和非均勻量化編碼[1]。信源編碼實現(xiàn)的總流程圖如1所示。
圖1 信源編碼設計流程圖
離散無記憶信源的數(shù)學模型如下:
編碼過程中要用到信源符號的統(tǒng)計特性,即信源符號的概率,離散信源編碼實現(xiàn)框圖如圖2所示。
圖2 離散信源編碼框圖
連續(xù)信源編碼后經(jīng)過抽樣和量化再進行編碼。由于量化是用取值域上有限個量化值的離散數(shù)值來代替信號的無窮多連續(xù)取值,因此量化必然帶來誤差。這也就成為連續(xù)信源編碼與離散信源編碼的最大區(qū)別。
我們利用Matlab工具箱中用于用戶與計算機進行信息交流的交互工具——圖形用戶界面GUI(Graphical User Interface),設計實現(xiàn)Matlab信源編碼實驗系統(tǒng)操作界面以及實現(xiàn)離散信源和連續(xù)信源編碼兩部分[2]。
由信源編碼理論可知,幾種離散信源編碼方法共同點是信源符號數(shù)N和信源符號的概率分布p已給定,所以在離散信源編碼GUI界面部分可以將N和p作為輸入,首先要在設計界面中添加兩個文本框控件(Edit Text),作為N和p的輸入框;然后設置三個按鈕控件(Radio Buttons),分別設置為Shannon,F(xiàn)eno和 Huffman 按鍵[3],作為三種編碼方法的響應鍵,實現(xiàn)三種典型的無失真編碼。離散信源編碼方法要求有編碼效率、平均碼長和碼字的計算結果等。所以,我們可以把這部分作為輸出顯示在GUI實驗界面中,輸出部分包括信源熵、編碼效率、平均碼長和碼字等四項。在GUI界面中添加四個按鈕控件,分別作為它們的輸出框[4]。
連續(xù)信源編碼方法的編碼對象是單頻正弦連續(xù)信號,已知條件是消息的幅度a、頻率f、相位p和量化電平數(shù)D。在實驗界面中添加四個文本框控件,作為連續(xù)信源編碼部分的四個輸入。添加三個按鈕控件,分別設置為均勻編碼和非均勻編碼(A律和μ律),實現(xiàn)三種不同的連續(xù)編碼方法。對于輸出部分,添加兩個按鈕控件,用來顯示輸出編碼后的碼字和量化誤差[5]。
根據(jù)上述的實現(xiàn)思想,運用Matlab的GUI圖形操作界面設計出了如圖3所示的信源編碼實驗系統(tǒng)GUI操作界面。
圖3 信源編碼實驗系統(tǒng)GUI操作界面
1)離散無記憶信源的Huffman編碼實現(xiàn)
離散無記憶信源的數(shù)學模型如下:
打開Matlab信源編碼實驗界面,在N處鍵入6,在p處鍵入[0.25,0.25,0.2,0.15,0.1,0.05],單擊標有Huffman的按鈕。通過Matlab后臺運行,在界面上直接顯示出信源熵、編碼效率、平均碼長和碼字。執(zhí)行結果顯示如圖5,編碼效率為98.906%,與Shannon和Feno兩種編碼比較,Huffman編碼方法的編碼效率較高。
2)連續(xù)信源的均勻編碼方法
已知輸入信源信號的幅度為a,頻率為f,相位用p表示,量化電平數(shù)用d表示。模擬信號的模型:samp=a*sin(2*pi*f*t+p)假設a=2,f=300,p=pi。
在Matlab信源編碼實驗界面中,幅度a處鍵入2,在頻率f處鍵入300,在相位p處鍵入pi,在量化電平數(shù)d處鍵入10,單擊標有均勻編碼的按鈕,可以直接顯示出均勻量化編碼得到的碼字和量化誤差,執(zhí)行結果顯示如圖4所示。
圖4 Matlab信源編碼應用實例
本文利用Matlab的GUI工具設計信源編碼實驗系統(tǒng),實現(xiàn)離散信源編碼與連續(xù)信源編碼。只需簡單操作文本輸入框和按鈕,就可以直觀便捷地實現(xiàn)各種編碼方法,輸出各編碼方法編碼之后的信源熵、編碼效率、平均碼長和碼字,還可以直接比較各種編碼方法的編碼效率,找到最適合的編碼方式。實踐證明,該實驗系統(tǒng)界面友好,操作簡單,能夠方便的應用于實驗教學中。
[1]陳運.信息論與編碼[M].北京:電子工業(yè)出版社,2009
[2]張正言,黃煒嘉,張冰.《信息論與編碼》實驗教學平臺的設計[J].西安:現(xiàn)代電子技術,2011,34(3):191-193
[3]李敏,何光普.無失真變長編碼及其Matlab實現(xiàn)[J].樂山:樂山師范學院學報.2006,21(12):28-30
[4]安數(shù),趙霞,徐小華.基于Matlab GUI的整流電路仿真設計[J].西安:現(xiàn)代電子技術.2011,34(4):154-158
[5]趙靜,張瑾,高新科.基于Matlab的通信系統(tǒng)仿真[J].北京:北京航空航天大學出版社,2007