闕大順,王 虹,楊 杰
(武漢理工大學(xué)信息工程學(xué)院,湖北武漢,430070)
采樣技術(shù)在“數(shù)字信號(hào)處理”課程中占有重要的地位。一般模擬信號(hào)數(shù)字化處理時(shí),采樣頻率都被看作一個(gè)固定值,但在實(shí)際應(yīng)用系統(tǒng)中,有時(shí)系統(tǒng)工作頻率是變化的,即會(huì)遇到采樣頻率轉(zhuǎn)換的問(wèn)題,這樣的系統(tǒng)稱為多采樣率數(shù)字信號(hào)處理系統(tǒng),其在數(shù)字語(yǔ)音、數(shù)字視頻和數(shù)字通信等處理系統(tǒng)中有著廣泛的應(yīng)用[1,2]。如數(shù)字電視中即要傳輸語(yǔ)音信號(hào),又要傳輸圖像信號(hào),這兩種信號(hào)的頻率很不相同,采樣頻率也自然不同,系統(tǒng)必然要工作在多采樣頻率狀態(tài);又如數(shù)字電話中,同時(shí)要傳輸語(yǔ)音、傳真甚至視頻信號(hào),幾種信號(hào)的帶寬相差很大,所以系統(tǒng)也應(yīng)具備多采樣頻率功能,并能根據(jù)傳輸?shù)囊筮M(jìn)行頻率轉(zhuǎn)換。近年來(lái),多采樣率數(shù)字信號(hào)處理已成為數(shù)字信號(hào)處理領(lǐng)域中一個(gè)重要的研究?jī)?nèi)容[1]。
鑒于多采樣率理論較難掌握,筆者在實(shí)際教學(xué)中,結(jié)合Matlab編程,可以顯示在多采樣率變化前后所分析信號(hào)的時(shí)域和頻域演化過(guò)程,以加深學(xué)生對(duì)于多采樣率技術(shù)的理解。同時(shí)為了便于開(kāi)展實(shí)驗(yàn)教學(xué)和學(xué)生課外學(xué)習(xí),筆者還完成了基于C++與Matlab混合編程的多采樣頻率數(shù)字信號(hào)處理虛擬實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì),使學(xué)生能系統(tǒng)深入學(xué)習(xí)采樣、抽取、內(nèi)插和有理數(shù)倍等多種方法實(shí)現(xiàn)采樣率的轉(zhuǎn)換。
多采樣率數(shù)字信號(hào)處理是以連續(xù)信號(hào)的采樣為基礎(chǔ)的。在該部分教學(xué)中,首先講解有限長(zhǎng)序列的抽取、插值和有理數(shù)倍采樣率轉(zhuǎn)換的基本原理,其次是采樣率轉(zhuǎn)換濾波器的實(shí)現(xiàn),最后完成上述內(nèi)容的Matlab編程仿真實(shí)現(xiàn)[1]。
本文介紹的多采樣率數(shù)字信號(hào)處理仿真系統(tǒng)由C++與Matlab混合編程實(shí)現(xiàn),該系統(tǒng)集Matlab強(qiáng)大的數(shù)值計(jì)算功能和VC++開(kāi)發(fā)效率高、可視化強(qiáng)的優(yōu)點(diǎn)于一體,在很大程度上解決了該課程理論抽象、計(jì)算繁瑣的問(wèn)題,使學(xué)生在相對(duì)直觀的條件下更好地掌握該部分理論的核心內(nèi)容,且便于直觀分析比較[3]。
該系統(tǒng)采用模塊化編程方法設(shè)計(jì),完成的主要功能模塊框圖如圖1所示。
圖1 多采樣率系統(tǒng)功能模塊框圖
該模塊結(jié)構(gòu)圖中的各個(gè)主要模塊還包含了不同的子功能塊,點(diǎn)擊軟件主界面中的控鍵可分別進(jìn)入相應(yīng)的底層界面,根據(jù)提示進(jìn)行相關(guān)數(shù)據(jù)輸入后便可進(jìn)行動(dòng)態(tài)仿真。
編程實(shí)現(xiàn)的系統(tǒng)主界面如圖2所示。
圖2 多采樣率仿真系統(tǒng)主界面
點(diǎn)擊圖2中的“采樣演示”、“多采樣率演示”和“應(yīng)用舉例演示”等,可完成對(duì)應(yīng)圖1中的采樣、抽取、內(nèi)插和有理數(shù)倍等多種功能實(shí)現(xiàn)對(duì)多采樣率轉(zhuǎn)換的學(xué)習(xí),最后通過(guò)針對(duì)某一語(yǔ)音信號(hào)的多采樣率變換來(lái)展示其具體的應(yīng)用。
學(xué)生可通過(guò)上述操作使用本仿真系統(tǒng),也可運(yùn)行本系統(tǒng)軟件包提供的底層Matlab處理程序;從采樣、抽取和插值的含義出發(fā),修改底層的參數(shù),來(lái)研究采樣率整數(shù)倍增大和整數(shù)倍減小的過(guò)程;使用抽取和插值結(jié)合,來(lái)達(dá)到有理數(shù)倍改變采樣率的目的;通過(guò)對(duì)時(shí)域、頻域波形的分析,來(lái)仔細(xì)體會(huì)多采樣率變化前后所分析信號(hào)的時(shí)域和頻域演化過(guò)程。
點(diǎn)擊圖2主界面中的“采樣演示”按鈕,可進(jìn)入如圖3所示的采樣演示二級(jí)界面,從中可以觀察原始連續(xù)信號(hào)、采樣信號(hào)及其對(duì)應(yīng)的頻域波形變化,同時(shí)可選擇底部的按鈕來(lái)分別觀察滿足采樣定理、臨界采樣或采樣混疊時(shí)的情況。
圖3采樣功能的實(shí)現(xiàn)與分析界面
圖3中給出的是滿足采樣定理(采樣率:Fs>2Fmax)時(shí)的情況。點(diǎn)擊原始信號(hào),左上子圖顯示周期為20 Hz的三角波信號(hào)時(shí)域波形,左下子圖顯示的是該信號(hào)的頻域波形;右上子圖顯示的是對(duì)原始信號(hào)以Fs(120 Hz)進(jìn)行采樣且采樣率Fs>2Fmax的波形,每個(gè)周期采6個(gè)點(diǎn);右下子圖顯示的是采樣信號(hào)的頻域波形,可看出在Fs>2Fmax時(shí),采樣頻譜產(chǎn)生了周期延拓,頻譜幅度下降。
點(diǎn)擊圖2主界面中的“多采樣率演示”按鈕,可進(jìn)入如圖4所示的多采樣率演示二級(jí)界面,從中可以觀察原始序列、多采樣率變化序列及其對(duì)應(yīng)的頻域波形變化,可選擇底部的按鈕來(lái)分別觀察2倍抽取、3倍插值、抽取混疊和1.5倍有理因子采樣變換的情況。
圖4 多采樣率變換功能的實(shí)現(xiàn)與分析界面
上圖給出的是3倍插值時(shí)的情況。點(diǎn)擊3倍插值按鈕,左上子圖顯示的是周期N=16的原始三角波序列,左下子圖顯示的是該原始序列的頻譜;右上子圖顯示的是對(duì)原始序列3倍插值后的三角波序列,此時(shí)每個(gè)周期的序列點(diǎn)數(shù)變?yōu)樵瓉?lái)的3倍;右下子圖顯示的是插值后三角波序列的頻譜,插值后的序列頻譜形狀與原序列頻譜保持一致,在頻譜軸上被壓縮,幅值變?yōu)樵瓉?lái)的3倍。
點(diǎn)擊圖2主界面中的“應(yīng)用舉例演示”按鈕,可進(jìn)入如圖5所示的應(yīng)用舉例演示二級(jí)界面,從中可以觀察針對(duì)某一語(yǔ)音信號(hào)的多采樣率(0.1倍、0.5倍、2.5倍、4倍、7.5倍和10倍)變換的情況。
圖5語(yǔ)音信號(hào)多采樣率變換的實(shí)現(xiàn)與分析界面
圖5中給出的是4倍采樣率轉(zhuǎn)換時(shí)的情況。點(diǎn)擊“讀取信號(hào)”會(huì)播放原始語(yǔ)音,左上子圖為讀取的原始語(yǔ)音信號(hào)的時(shí)域波形,左下子圖為該語(yǔ)音信號(hào)的頻域圖;點(diǎn)擊“4倍采樣率轉(zhuǎn)換”會(huì)播放產(chǎn)生對(duì)應(yīng)變化的語(yǔ)音,右上子圖為采樣率變?yōu)樵瓉?lái)4倍時(shí)候的時(shí)域波形,右下子圖是其對(duì)應(yīng)的頻域圖;可以看出,采樣率變?yōu)樵瓉?lái)的4倍時(shí),時(shí)域波形比原始時(shí)域波形要更密集,而頻域圖中的頻譜波形保持不變,但幅值變?yōu)樵瓉?lái)的4倍,頻率軸上頻譜被壓縮。
“應(yīng)用舉例演示”模塊部分的最大特點(diǎn)是,點(diǎn)擊對(duì)應(yīng)的“讀取信號(hào)”時(shí)會(huì)播放原始語(yǔ)音,點(diǎn)擊多采樣率變換(如0.1倍、0.5倍、2.5倍等)按鈕時(shí),亦會(huì)播放產(chǎn)生了采樣率變換后的語(yǔ)音效果,這樣可以結(jié)合多采樣率變化前后信號(hào)的時(shí)域和頻域演化過(guò)程進(jìn)行直觀的分析。
本文結(jié)合多采樣率數(shù)字信號(hào)處理的教學(xué)特點(diǎn),完成了基于C++與Matlab混合編程的多采樣率數(shù)字信號(hào)處理仿真系統(tǒng)設(shè)計(jì),并通過(guò)采樣功能、多采樣率功能和語(yǔ)音信號(hào)的多采樣率變換功能的應(yīng)用舉例,闡述了該仿真系統(tǒng)的實(shí)際應(yīng)用。本仿真系統(tǒng)已在“數(shù)字信號(hào)處理”課堂教學(xué)和實(shí)驗(yàn)教學(xué)中使用,取得了較好的教學(xué)效果。
[1] 劉泉,闕大順,郭志強(qiáng).數(shù)字信號(hào)處理原理與應(yīng)用(第2版)[M] .北京:電子工業(yè)出版社,2009.
[2] 張萌,武攀.基于Matlab的多采樣率信號(hào)處理教學(xué)設(shè)計(jì)[J] .南京:電氣電子教學(xué)學(xué)報(bào),2009(4).
[3] 劉維.精通Matlab與C/C++混合程序設(shè)計(jì)(第3版)[M] .北京:北京航空航天大學(xué)版社,2012.