俎云霄,賈 越,李 奔,李 勇
(北京郵電大學(xué)電子工程學(xué)院,北京100876)
“信號(hào)與系統(tǒng)”是高等院校電子信息類專業(yè)的一門(mén)非常重要的學(xué)科基礎(chǔ)課,對(duì)后續(xù)專業(yè)課,如“數(shù)字信號(hào)處理”和“通信原理”等具有承上啟下的作用。如何讓學(xué)生理解該課程中的基本物理概念,掌握基本的分析方法并靈活運(yùn)用理論工具解決實(shí)際問(wèn)題,是教學(xué)過(guò)程中所要解決的重要問(wèn)題。為此,本文利用Matlab的GUI界面編程建立了一套信號(hào)與系統(tǒng)仿真演示系統(tǒng),幫助學(xué)生理解相關(guān)的概念和理論。該系統(tǒng)界面友好,操作簡(jiǎn)單,既可作為教師課堂上的教學(xué)演示,也可作為學(xué)生課后自學(xué)和復(fù)習(xí)的工具。[1-2]
該演示系統(tǒng)以“信號(hào)與系統(tǒng)”課程內(nèi)容為基礎(chǔ),對(duì)課程內(nèi)容逐一演示。在系統(tǒng)構(gòu)架設(shè)計(jì)方面,采用模塊化方式,根據(jù)課程內(nèi)容將演示系統(tǒng)分為兩個(gè)主模塊,即“連續(xù)時(shí)間信號(hào)與系統(tǒng)”和“離散時(shí)間信號(hào)與系統(tǒng)”。每個(gè)主模塊又分別由若干子模塊組成。在“連續(xù)時(shí)間信號(hào)與系統(tǒng)”主模塊中有5個(gè)子模塊,基本信號(hào)時(shí)域性質(zhì),卷積,信號(hào)的傅里葉變換,拉氏變換及系統(tǒng)頻率特性和傅氏變換與通信系統(tǒng)。在“離散時(shí)間信號(hào)與系統(tǒng)”主模塊中也有5個(gè)子模塊,分別是:離散時(shí)間信號(hào)與卷積,基本函數(shù)的Z變換,Z變換的基本性質(zhì),離散時(shí)間系統(tǒng)的頻率特性和離散傅里葉變換的性質(zhì)。
系統(tǒng)界面為多級(jí)嵌套形式,主界面中顯示課程名稱和系統(tǒng)入口,點(diǎn)擊“進(jìn)入目錄”即可進(jìn)入主模塊界面。主模塊界面包括“連續(xù)時(shí)間信號(hào)與系統(tǒng)”和“離散時(shí)間信號(hào)與系統(tǒng)”兩個(gè)按鈕,點(diǎn)擊即可進(jìn)入各子模塊。子模塊采用人機(jī)交互命令,通過(guò)輸入相應(yīng)參數(shù)或拖動(dòng)滑動(dòng)條調(diào)整參數(shù)數(shù)值即可得到相應(yīng)波形。整個(gè)系統(tǒng)界面直觀清晰。
演示系統(tǒng)采用模塊化的設(shè)計(jì)思路,在設(shè)計(jì)每個(gè)模塊前,首先確定模塊的演示內(nèi)容以及各波形顯示圖的布局,然后在GUI的組件布局編輯器中添加各個(gè)相應(yīng)的組件并設(shè)置所需的屬性。組件屬性分為三類:①圖形化控件,包括按鈕、編輯框、列表和滾動(dòng)條等;②靜態(tài)元素,包括窗口和文本字符串;③菜單和坐標(biāo)系。最后,根據(jù)添加組件的屬性,在生成的m文件中對(duì)每個(gè)組件進(jìn)行具體功能的編程[3-5]。
1)基本設(shè)計(jì)方法
我們利用Matlab提供的FFT函數(shù),分別求出原信號(hào)及經(jīng)過(guò)時(shí)延后信號(hào)的幅頻特性和相頻特性。通過(guò)改變時(shí)移參數(shù)t0,可以觀察信號(hào)頻譜隨t0的變化。具體采用如下步驟。
(1)對(duì)信號(hào)以間隔T=0.05s進(jìn)行離散化,從而構(gòu)成一個(gè)數(shù)組。因?yàn)镕FT函數(shù)對(duì)包含2n(n為正整數(shù))個(gè)數(shù)值的數(shù)組進(jìn)行操作時(shí),運(yùn)行速度非??欤赃@里設(shè)計(jì)該數(shù)組共包含Nb=4096個(gè)數(shù)值,即在時(shí)域上橫跨Nb·T=204.8s的范圍;
(2)對(duì)包含這Nb=4096個(gè)數(shù)值的數(shù)組進(jìn)行FFT運(yùn)算[6],并將運(yùn)算結(jié)果利用fftshift移至零頻中心,再乘以T,將其轉(zhuǎn)換為模擬頻譜;
(3)以頻率間隔Δω=2π/Nb·T作頻譜圖,對(duì)應(yīng)的頻點(diǎn)為k·D,其中k=floor[-(Nb-1)/2:1:(Nb-1)/2] ,這里floor函數(shù)為向下取整函數(shù)。
2)操作使用
啟動(dòng)系統(tǒng)后,點(diǎn)擊:“進(jìn)入目錄→連續(xù)時(shí)間信號(hào)與系統(tǒng)→信號(hào)的傅里葉變換→傅里葉變換的時(shí)移特性”,進(jìn)入演示界面,在界面的右上角選擇要觀看的信號(hào)類型即可。
本演示系統(tǒng)選擇了兩種典型信號(hào)——矩形脈沖信號(hào)和指數(shù)信號(hào)作為示例。圖1即為矩形脈沖及其移位信號(hào)的頻譜圖。圖中顯示的6個(gè)子圖中,左側(cè)3幅分別為原信號(hào)f(t)的時(shí)域波形、幅度頻譜和相位頻譜,右側(cè)3幅為時(shí)移后f(t-t0)的時(shí)域波形、幅度頻譜和相位頻譜。在本圖中,顯示的是信號(hào)右移t0=0.23271的頻譜圖。調(diào)節(jié)圖中上部中間的滑動(dòng)條可改變t0。點(diǎn)擊右下角的“關(guān)閉”按鈕可以退出此界面。圖中,時(shí)域波形的橫軸表示時(shí)間,其單位是“秒”。幅度頻譜的橫軸表示角頻率,單位是“弧度/秒”,縱軸表示頻譜幅度;相位頻譜的橫軸與幅度頻譜相同,縱軸表示相位,單位是“度”。隨后圖2和圖3的坐標(biāo)均與此相同,不再重復(fù)。
圖1 傅里葉變換的時(shí)移特性演示界面
1)基本設(shè)計(jì)方法
我們對(duì)于給定的信號(hào)按照周期Ts進(jìn)行抽樣,假設(shè)低通濾波器的截止角頻率為ωc,則由抽樣信號(hào)f(nTs)恢復(fù)f(t)的表達(dá)式為
在Matlab中也是根據(jù)此式恢復(fù)原函數(shù)f(t),這里設(shè)定n的取值范圍為-50~50。求和部分利用矩陣相乘實(shí)現(xiàn),再設(shè)t=-9:0.005:9,由此得到恢復(fù)信號(hào)的波形。
2)操作使用
系統(tǒng)啟動(dòng)后,點(diǎn)擊:“進(jìn)入目錄→連續(xù)時(shí)間信號(hào)與系統(tǒng)→傅氏變換與通信系統(tǒng)→抽樣信號(hào)恢復(fù)連續(xù)時(shí)間信號(hào)”,進(jìn)入演示界面。調(diào)節(jié)Ts可以觀察不同抽樣周期情況下信號(hào)的恢復(fù)情況。例如臨界采樣、過(guò)采樣和欠采樣。本系統(tǒng)設(shè)置的臨界采樣周期為T(mén)s=1.57。
圖2所示為過(guò)采樣時(shí)的情況。圖2(a)中自上而下分別為原始信號(hào)、抽樣信號(hào)和低通濾波器的時(shí)域波形(對(duì)低通濾波器顯示的是其沖激響應(yīng))和頻譜。其中原始信號(hào)及其頻譜是假設(shè)的對(duì)應(yīng)關(guān)系,因?yàn)楸狙菔镜哪康氖钦f(shuō)明信號(hào)經(jīng)抽樣后的恢復(fù)問(wèn)題。點(diǎn)擊圖2(a)中右下角的“下頁(yè)”按鈕可顯示恢復(fù)信號(hào)、原始信號(hào)及恢復(fù)信號(hào)和原始信號(hào)的誤差。如圖2(b)所示是其誤差放大100000倍后的波形。
1)基本設(shè)計(jì)方法
我們首先用str2num()函數(shù)實(shí)現(xiàn)系統(tǒng)函數(shù),按照降冪順序?qū)⑾到y(tǒng)函數(shù)的分子和分母多項(xiàng)式的系數(shù)以數(shù)組形式輸入,然后用函數(shù)freqz()將輸入的系數(shù)轉(zhuǎn)換成系統(tǒng)函數(shù)H(z)的表達(dá)式,最后分別用函數(shù)abs(),angle()和zplane()畫(huà)出系統(tǒng)函H(z)的幅頻特性、相頻特性和零極點(diǎn)圖。
2)操作使用
系統(tǒng)啟動(dòng)后,點(diǎn)擊:“進(jìn)入目錄→離散時(shí)間信號(hào)與系統(tǒng)→離散時(shí)間系統(tǒng)頻率特性→開(kāi)始仿真”,進(jìn)入演示界面。首先跳出如圖3右下所示的對(duì)話框,等待用戶輸入系統(tǒng)函數(shù),點(diǎn)擊“OK”即可顯示幅頻特性曲線、相頻特性曲線和零極點(diǎn)圖。圖3所示的三條曲線是網(wǎng)絡(luò)函數(shù)H(z)=(z+1)/(z2+2z+2)的相關(guān)圖形。
圖3 離散時(shí)間系統(tǒng)頻率特性演示界面
系統(tǒng)基于Matlab設(shè)計(jì)本身不能脫離Matlab運(yùn)行。為了使用方便,將其生成exe可執(zhí)行文件,以便可以在沒(méi)有安裝Matlab軟件的計(jì)算機(jī)上運(yùn)行。
生成執(zhí)行文件的方法如下:在Windows操作系統(tǒng)安裝MCR組件,其默認(rèn)路徑為 oolboscompilerdeploywin32;在Command Window中輸入mcc-m-a格式語(yǔ)句將.m文件生成exe文件和ctf文件;在未安裝Matlab的計(jì)算機(jī)上安裝MCR組件;將生成的exe和ctf文件拷貝到MCRv70目錄中并設(shè)置環(huán)境變量—變量名:Path,變量值:MCRv70 untimewin32即可。完成上述操作后,我們就可在未安裝Matlab的計(jì)算機(jī)上執(zhí)行該系統(tǒng)的exe文件。
本文介紹了利用Matlab的GUI界面編程方法構(gòu)建信號(hào)與系統(tǒng)仿真演示系統(tǒng)的方法,并詳細(xì)介紹了幾個(gè)典型的演示實(shí)例。整個(gè)系統(tǒng)界面直觀、清晰,導(dǎo)航方便,且配有簡(jiǎn)要文字說(shuō)明,具有良好的人機(jī)交互界,可通過(guò)滑動(dòng)條或手動(dòng)輸入對(duì)參數(shù)進(jìn)行修改,并將結(jié)果實(shí)時(shí)顯示在演示界面中。通過(guò)該系統(tǒng)的實(shí)際應(yīng)用,學(xué)生的學(xué)習(xí)興趣,也使學(xué)生對(duì)所學(xué)內(nèi)容課程有了更深刻的理解。
[1] 鄭君里,應(yīng)啟衍,楊為理.信號(hào)與系統(tǒng)(上冊(cè)).第二版[M] .北京:高等教育出版社,2005
[2] 鄭君里,應(yīng)啟衍,楊為理.信號(hào)與系統(tǒng)(下冊(cè)).第二版[M] .北京:高等教育出版社,2005
[3] 陳垚光,毛濤濤,王正林,王玲.精通MATLAB GUI設(shè)計(jì)[M] .北京:.電子工業(yè)出版社,2008
[4] 張威.MATLAB基礎(chǔ)與編程入門(mén)[M] .西安:西安電子科技大學(xué)出版社,2004
[5] 甘俊英,胡異丁.基于MATLAB的信號(hào)與系統(tǒng)實(shí)驗(yàn)指導(dǎo)[M] .北京:清華大學(xué)出版社,2007
[6] 谷源濤,應(yīng)啟珩,鄭君里.信號(hào)與系統(tǒng)——MATLAB綜合實(shí)驗(yàn)[M] .北京:高等教育出版社,2008