廉小親 丁馭嵐 黃鈺典 王茹逸 關(guān)文洋
(北京工商大學(xué) 人工智能學(xué)院, 北京 100048)
“信息論與編碼”是信息工程、通信工程等電子信息類專業(yè)的一門重要的專業(yè)基礎(chǔ)課程,是在電子通信領(lǐng)域,無論是理論研究還是工程應(yīng)用都離不開的一門課程[1-3]。該課程涉及許多數(shù)學(xué)知識如:概率論及統(tǒng)計、線性代數(shù)等,其知識內(nèi)容復(fù)雜且抽象,因此在課程教學(xué)過程中需要將理論教學(xué)和實(shí)踐教學(xué)相結(jié)合,以保證學(xué)生對于理論知識掌的全面且扎實(shí)[4-5]。目前北京商業(yè)大學(xué)“信息論與編碼”課程教學(xué)計劃36學(xué)時,實(shí)驗(yàn)課內(nèi)容12學(xué)時,旨在教授學(xué)生的基礎(chǔ)理論知識的同時,引導(dǎo)學(xué)生分析和解決問題,從而鞏固理論知識,鍛煉動手實(shí)踐的能力,為學(xué)生未來從事電子通信領(lǐng)域的相關(guān)工作打下良好的基礎(chǔ)。
信道編碼中的漢明碼是“信息論與編碼”課程中的重要內(nèi)容。漢明碼屬于差錯控制編碼,即在原有信息序列的基礎(chǔ)上通過增加冗余比特來提高信息傳輸?shù)目煽啃訹6]。在眾多類型的差錯控制編碼中,完備碼的特性決定了所有在糾錯能力范圍內(nèi)的差錯圖案都能用最佳譯碼器得到糾正,因此完備碼在各類信道編碼的應(yīng)用中受到廣泛歡迎。而漢明碼是一種糾錯能力t=1的經(jīng)典完備碼,加深學(xué)生對漢明碼編譯碼原理的理解,有助于學(xué)生打好差錯控制編碼的基礎(chǔ)。
以漢明碼理論為基礎(chǔ),設(shè)計音頻信號的漢明碼編譯碼系統(tǒng)綜合實(shí)驗(yàn)案例,旨在通過案例式教學(xué)激發(fā)學(xué)生學(xué)習(xí)的積極性和主動性,有效培養(yǎng)學(xué)生學(xué)習(xí)能力、協(xié)作能力以及利用數(shù)學(xué)工具解決工程問題的能力,達(dá)到OBE教育模式下的課程目標(biāo)。
對于3.8 s長度的音頻文件,設(shè)計音頻信號的漢明碼編譯碼系統(tǒng)綜合實(shí)驗(yàn)案例,實(shí)現(xiàn)音頻信號的漢明碼編譯碼過程;在此基礎(chǔ)上,在漢明碼編碼系統(tǒng)中加1位或2位錯后,研究漢明碼編譯碼系統(tǒng)的糾錯性能。綜合實(shí)驗(yàn)案例設(shè)計流程如圖1所示。
圖1 綜合實(shí)驗(yàn)案例設(shè)計流程
該案例的編程環(huán)境是Matlab。由于音頻信號是模擬信號,而漢明碼編碼針對的是數(shù)字信號,所以首先利用PCM編碼對輸入的音頻信號進(jìn)行預(yù)處理;然后利用Matlab通信工具箱漢明碼編譯碼函數(shù)或基于Matlab設(shè)計漢明碼編譯碼函數(shù)兩種方式實(shí)現(xiàn)對音頻信號的漢明編碼;隨后,對經(jīng)過漢明編碼的音頻信號進(jìn)行加錯處理,以模擬信道傳輸中的噪聲干擾;最后利用Matlab通信工具箱漢明碼編譯碼函數(shù)或基于Matlab設(shè)計的漢明碼編譯碼函數(shù)進(jìn)行漢明碼譯碼與糾錯,進(jìn)而進(jìn)行PCM譯碼,通過將音頻原聲與信道接收端譯碼后的音頻信號進(jìn)行對比,研究漢明碼的糾錯能力。
案例要求學(xué)生利用Matlab通信工具箱函數(shù)、基于Matlab設(shè)計的編譯碼函數(shù)兩種方式實(shí)現(xiàn)對音頻信號的漢明碼編譯碼過程。第一種方式可以使得學(xué)生快速建立音頻通信系統(tǒng)的總體概念,第二種方式可以使得學(xué)生進(jìn)一步加強(qiáng)對漢明編碼譯碼過程的理解,進(jìn)而增強(qiáng)學(xué)生的綜合知識應(yīng)用能力。
(m,k)漢明碼是糾錯能力t=1的線性分組碼的統(tǒng)稱,也是一種糾單錯的完備碼,該編碼通過在原信息序列中插入m位監(jiān)督位,保障編碼的糾錯能力[7]。漢明碼的碼長m和信息位數(shù)k服從式(1)所示規(guī)律。
(m,k)=2m-1,2m-1-m
(1)
式(1)中,m為監(jiān)督位數(shù),m=n-k。
以(7,4)漢明碼為例說明漢明碼編碼原理。假設(shè)生成矩陣G如式(2)所示。
(2)
給定式(3)所示的信息序列M后,根據(jù)式(4)可計算得到該信息序列M相應(yīng)的漢明碼字C。
M=m3m2m1m0
(3)
C=M·G=(c6c5c4c3c2c1c0)
(4)
由于信息序列的長度k=4,因此根據(jù)式(4)得到的碼字共有16個,碼字中各碼元與信息位之間的關(guān)系如式(5)所示,16個碼字與信息序列對應(yīng)關(guān)系如表1所示。
(5)
表1 碼字C與信息序列M的對應(yīng)關(guān)系
由式(2)所示的生成矩陣G,根據(jù)式(6)所示的生成矩陣G與校驗(yàn)矩陣H之間的關(guān)系,得到校驗(yàn)矩陣H如式(7)所示。式(6)中O代表一個尺寸為4*3的零矩陣。
G·HT=O
(6)
(7)
設(shè)接收序列R如式(8)所示,相對應(yīng)的發(fā)送碼字為C,則E=R-C或E=R+C稱為差錯圖案,定義E如式(9)所示。
R=(r6r5r4r3r2r1r0)
(8)
E=(e6e5e4e3e2e1e0)
(9)
定義伴隨式S如式(10)所示。
S=RHT=EHT
(10)
已知CHT=O,其中O代表一個1×3的行向量,式(10)可簡化為:
S=RHT=EHT
(11)
式(11)中定義RHT的運(yùn)算結(jié)果為伴隨式S=(s2s1s0),可以通過伴隨式來檢驗(yàn)傳輸是否出錯,并進(jìn)行相應(yīng)的糾錯。
若接收序列R是所發(fā)碼字,則意味著在信道傳輸過程中,沒有發(fā)生差錯,則滿足關(guān)系式S=RHT=CHT=(0 0 0)。反之,若發(fā)生差錯,則可通過表2所示的伴隨式與差錯圖案對應(yīng)關(guān)系的譯碼表進(jìn)行譯碼。
假設(shè)R=(1000110),得到伴隨式S=(001),通過表2可以查到E=(0000001),進(jìn)而得到所發(fā)碼字的估計值C′=(1000111)。
表2 譯碼表
由于E有27=128種可能錯誤圖樣,但S只有8種圖樣,因此S的每一種圖樣對應(yīng)的差錯圖案 量有16種,即如果要糾錯的話,根據(jù)S的值可以有16種可能的糾錯方案。一般情況下取這16種圖案中碼重最小的圖樣,因?yàn)橥瑯忧闆r下,誤碼個數(shù)越多,概率越小[8]。
利用Matlab功能函數(shù)encode()和decode()來實(shí)現(xiàn)漢明碼編譯碼系統(tǒng),系統(tǒng)實(shí)現(xiàn)的具體流程如下:
(1)導(dǎo)入待編碼的原始音頻信號,并對音頻信號進(jìn)行PCM編碼,即對音頻信號進(jìn)行抽樣、量化與編碼。
(2)調(diào)用功能函數(shù)encode()對PCM編碼結(jié)果進(jìn)行漢明編碼。
(3)對漢明編碼結(jié)果隨機(jī)加1位或2位錯碼,以模擬碼字在噪聲信道的傳輸過程。
(4)調(diào)用功能函數(shù)decode()對加噪處理的編碼進(jìn)行漢明碼譯碼與糾錯。
(5)對漢明碼譯碼的結(jié)果進(jìn)行PCM譯碼,將其還原為模擬信號,便于與原音頻序列對比。
利用Matlab自編漢明碼編譯碼函數(shù)實(shí)現(xiàn)漢明碼編譯碼系統(tǒng),系統(tǒng)實(shí)現(xiàn)的具體流程如下:
1)導(dǎo)入音頻文件并實(shí)現(xiàn)PCM編碼
導(dǎo)入待編碼的原始音頻信號,并對音頻信號進(jìn)行PCM編碼,即對音頻信號進(jìn)行抽樣、量化與編碼。
2)調(diào)用Matlab自編漢明編碼函數(shù),得到PCM編碼結(jié)果的漢明碼碼字
定義生成矩陣G如式(2)所示;以PCM編碼結(jié)果為信息序列M,利用式(4)計算PCM編碼結(jié)果的漢明碼碼字。
3)對漢明碼編碼結(jié)果進(jìn)行加噪處理
對漢明編碼結(jié)果隨機(jī)加1位或2位錯碼,以模擬碼字在噪聲信道的傳輸過程。
4)計算伴隨式并對信道接收序列進(jìn)行糾錯處理
針對信道接收序列,利用式(7)所示的校驗(yàn)矩陣,由式(11)計算得到伴隨式,并根據(jù)表2的譯碼表得到伴隨式對應(yīng)的錯誤圖案,將錯誤圖樣E與漢明碼接收序列R相加,得到糾錯結(jié)果C′。
5)獲取漢明碼譯碼結(jié)果
取漢明碼糾錯結(jié)果的前4位,即為譯碼結(jié)果。
6)進(jìn)行PCM譯碼并生成音頻文件
對漢明碼譯碼得到一系列碼字的前4位進(jìn)行譯碼,經(jīng)組合生成音頻文件。通過將原始音頻與譯碼后的音頻對比分析漢明碼編譯碼的性能。
對一段3.8 s的音頻信號進(jìn)行PCM編碼,然后通過Matlab工具箱函數(shù)實(shí)現(xiàn)漢明碼編碼后,再加入1位、2位錯位,隨后分別進(jìn)行漢明碼譯碼和PCM譯碼,最后合成新的音頻信號。圖2(a)為原始音頻信號,圖2(b)為信道加入1位錯位情況下進(jìn)行糾錯后PCM譯碼的音頻信號。
(a)原始音頻
(b)糾錯后PCM譯碼的音頻(信道加1位錯)圖2 原始音頻和糾錯后PCM譯碼的音頻
圖2中橫坐標(biāo)表示音頻信號采樣點(diǎn),縱坐標(biāo)表示為音頻信號幅值。由圖2(a)、圖2(b)對比可知,插入1位錯后,糾錯后PCM譯碼得到的音頻信號波形與原始信號基本一致。播放處理后的音頻文件與原音頻文件比較,還原度較高,但清晰程度略有下降。信道加入2位錯位情況下進(jìn)行糾錯后PCM譯碼的音頻信號完全模糊,無法辨別,故這里未展示音頻信號的黑白波形。
案例實(shí)驗(yàn)要求同4.1節(jié),這里基于Matlab自編函數(shù)實(shí)現(xiàn)漢明碼編譯碼的過程。圖3(a)為原始音頻信號,圖3(b)為信道加入1位錯位情況下進(jìn)行糾錯后PCM譯碼的音頻信號,圖3(c)為信道加入2位錯位情況下進(jìn)行糾錯后PCM譯碼的音頻信號。
(a)原始音頻
(b)糾錯后PCM譯碼的音頻(信道加1位錯)
(c)糾錯后PCM譯碼的音頻(信道加2位錯)圖3 原始音頻和糾錯后PCM譯碼的音頻
由圖3(a)、圖3(b)對比可知,插入1位錯情況下,糾錯后PCM譯碼得到的音頻信號波形與原始信號基本一致。播放處理后的音頻文件與原音頻文件比較,還原度較高,但清晰程度略有下降。
由圖3(a)、圖3(c)對比可知,插入2位錯后,無法得到正確的譯碼結(jié)果。較原音頻信號,譯碼后的音頻完全模糊,無法辨別。但是自編函數(shù)實(shí)現(xiàn)漢明碼編譯碼過程的方式,PCM譯碼后的音頻信號黑白波形比使用工具箱的漢明編譯碼函數(shù)這種方式顯示的效果較好。
在插入1位錯位的情況下,兩種方式獲得譯碼后的音頻信號與原信號的波形基本一致,說明該漢明碼對于信道中錯1位的情形能夠糾錯。較原音頻信號,由于音頻模擬信號數(shù)字化、數(shù)字化音頻還原的問題,兩種方式譯碼的清晰度有些許下降。
在插入2位錯位的情況下,兩種方式無法得到正確的譯碼結(jié)果。較原音頻信號,糾錯譯碼后的音頻結(jié)果完全模糊,無法辨別,說明該漢明碼對于信道中錯2位的情形不能正確糾錯,因?yàn)樵摑h明碼只具有糾單個錯誤的能力。
北京工商大學(xué)“信息論與編碼”課程團(tuán)隊(duì)經(jīng)過多年教學(xué),積累了豐富的教學(xué)資源,在信源編碼、信道編碼及信息安全等方面已設(shè)計了多個實(shí)驗(yàn)教學(xué)案例。以信道編碼中的音頻信號漢明碼編譯碼系統(tǒng)為例,詳細(xì)介紹了漢明碼的編譯碼原理,并給出了綜合實(shí)驗(yàn)案例基于Matlab通信工具箱漢明碼編譯碼函數(shù)及自編漢明碼編譯碼函數(shù)的兩種實(shí)現(xiàn)方式。第一種方式學(xué)生們上手快,可以快速地建立音頻漢明碼編譯碼通信系統(tǒng)的總體概念;第二種方式學(xué)生們通過自編漢明碼編解碼函數(shù)可以更好地理解并全面地掌握漢明碼編譯碼理論知識及其應(yīng)用的方法。
該案例經(jīng)過了3屆信息工程專業(yè)學(xué)生的實(shí)踐。結(jié)果表明:學(xué)生們對漢明碼的糾錯原理理解透徹,將漢明碼編譯碼理論應(yīng)用于音頻通信系統(tǒng)的能力大大增強(qiáng),學(xué)習(xí)“信息論與編碼”課程的興趣濃厚。