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