俎云霄,賈 越,李 奔,李 勇
(北京郵電大學電子工程學院,北京100876)
“信號與系統”是高等院校電子信息類專業的一門非常重要的學科基礎課,對后續專業課,如“數字信號處理”和“通信原理”等具有承上啟下的作用。如何讓學生理解該課程中的基本物理概念,掌握基本的分析方法并靈活運用理論工具解決實際問題,是教學過程中所要解決的重要問題。為此,本文利用Matlab的GUI界面編程建立了一套信號與系統仿真演示系統,幫助學生理解相關的概念和理論。該系統界面友好,操作簡單,既可作為教師課堂上的教學演示,也可作為學生課后自學和復習的工具。[1-2]
該演示系統以“信號與系統”課程內容為基礎,對課程內容逐一演示。在系統構架設計方面,采用模塊化方式,根據課程內容將演示系統分為兩個主模塊,即“連續時間信號與系統”和“離散時間信號與系統”。每個主模塊又分別由若干子模塊組成。在“連續時間信號與系統”主模塊中有5個子模塊,基本信號時域性質,卷積,信號的傅里葉變換,拉氏變換及系統頻率特性和傅氏變換與通信系統。在“離散時間信號與系統”主模塊中也有5個子模塊,分別是:離散時間信號與卷積,基本函數的Z變換,Z變換的基本性質,離散時間系統的頻率特性和離散傅里葉變換的性質。
系統界面為多級嵌套形式,主界面中顯示課程名稱和系統入口,點擊“進入目錄”即可進入主模塊界面。主模塊界面包括“連續時間信號與系統”和“離散時間信號與系統”兩個按鈕,點擊即可進入各子模塊。子模塊采用人機交互命令,通過輸入相應參數或拖動滑動條調整參數數值即可得到相應波形。整個系統界面直觀清晰。
演示系統采用模塊化的設計思路,在設計每個模塊前,首先確定模塊的演示內容以及各波形顯示圖的布局,然后在GUI的組件布局編輯器中添加各個相應的組件并設置所需的屬性。組件屬性分為三類:①圖形化控件,包括按鈕、編輯框、列表和滾動條等;②靜態元素,包括窗口和文本字符串;③菜單和坐標系。最后,根據添加組件的屬性,在生成的m文件中對每個組件進行具體功能的編程[3-5]。
1)基本設計方法
我們利用Matlab提供的FFT函數,分別求出原信號及經過時延后信號的幅頻特性和相頻特性。通過改變時移參數t0,可以觀察信號頻譜隨t0的變化。具體采用如下步驟。
(1)對信號以間隔T=0.05s進行離散化,從而構成一個數組。因為FFT函數對包含2n(n為正整數)個數值的數組進行操作時,運行速度非常快,所以這里設計該數組共包含Nb=4096個數值,即在時域上橫跨Nb·T=204.8s的范圍;
(2)對包含這Nb=4096個數值的數組進行FFT運算[6],并將運算結果利用fftshift移至零頻中心,再乘以T,將其轉換為模擬頻譜;
(3)以頻率間隔Δω=2π/Nb·T作頻譜圖,對應的頻點為k·D,其中k=floor[-(Nb-1)/2:1:(Nb-1)/2] ,這里floor函數為向下取整函數。
2)操作使用
啟動系統后,點擊:“進入目錄→連續時間信號與系統→信號的傅里葉變換→傅里葉變換的時移特性”,進入演示界面,在界面的右上角選擇要觀看的信號類型即可。
本演示系統選擇了兩種典型信號——矩形脈沖信號和指數信號作為示例。圖1即為矩形脈沖及其移位信號的頻譜圖。圖中顯示的6個子圖中,左側3幅分別為原信號f(t)的時域波形、幅度頻譜和相位頻譜,右側3幅為時移后f(t-t0)的時域波形、幅度頻譜和相位頻譜。在本圖中,顯示的是信號右移t0=0.23271的頻譜圖。調節圖中上部中間的滑動條可改變t0。點擊右下角的“關閉”按鈕可以退出此界面。圖中,時域波形的橫軸表示時間,其單位是“秒”。幅度頻譜的橫軸表示角頻率,單位是“弧度/秒”,縱軸表示頻譜幅度;相位頻譜的橫軸與幅度頻譜相同,縱軸表示相位,單位是“度”。隨后圖2和圖3的坐標均與此相同,不再重復。

圖1 傅里葉變換的時移特性演示界面
1)基本設計方法
我們對于給定的信號按照周期Ts進行抽樣,假設低通濾波器的截止角頻率為ωc,則由抽樣信號f(nTs)恢復f(t)的表達式為

在Matlab中也是根據此式恢復原函數f(t),這里設定n的取值范圍為-50~50。求和部分利用矩陣相乘實現,再設t=-9:0.005:9,由此得到恢復信號的波形。
2)操作使用
系統啟動后,點擊:“進入目錄→連續時間信號與系統→傅氏變換與通信系統→抽樣信號恢復連續時間信號”,進入演示界面。調節Ts可以觀察不同抽樣周期情況下信號的恢復情況。例如臨界采樣、過采樣和欠采樣。本系統設置的臨界采樣周期為Ts=1.57。
圖2所示為過采樣時的情況。圖2(a)中自上而下分別為原始信號、抽樣信號和低通濾波器的時域波形(對低通濾波器顯示的是其沖激響應)和頻譜。其中原始信號及其頻譜是假設的對應關系,因為本演示的目的是說明信號經抽樣后的恢復問題。點擊圖2(a)中右下角的“下頁”按鈕可顯示恢復信號、原始信號及恢復信號和原始信號的誤差。如圖2(b)所示是其誤差放大100000倍后的波形。

1)基本設計方法
我們首先用str2num()函數實現系統函數,按照降冪順序將系統函數的分子和分母多項式的系數以數組形式輸入,然后用函數freqz()將輸入的系數轉換成系統函數H(z)的表達式,最后分別用函數abs(),angle()和zplane()畫出系統函H(z)的幅頻特性、相頻特性和零極點圖。
2)操作使用
系統啟動后,點擊:“進入目錄→離散時間信號與系統→離散時間系統頻率特性→開始仿真”,進入演示界面。首先跳出如圖3右下所示的對話框,等待用戶輸入系統函數,點擊“OK”即可顯示幅頻特性曲線、相頻特性曲線和零極點圖。圖3所示的三條曲線是網絡函數H(z)=(z+1)/(z2+2z+2)的相關圖形。

圖3 離散時間系統頻率特性演示界面
系統基于Matlab設計本身不能脫離Matlab運行。為了使用方便,將其生成exe可執行文件,以便可以在沒有安裝Matlab軟件的計算機上運行。
生成執行文件的方法如下:在Windows操作系統安裝MCR組件,其默認路徑為 oolboscompilerdeploywin32;在Command Window中輸入mcc-m-a格式語句將.m文件生成exe文件和ctf文件;在未安裝Matlab的計算機上安裝MCR組件;將生成的exe和ctf文件拷貝到MCRv70目錄中并設置環境變量—變量名:Path,變量值:MCRv70 untimewin32即可。完成上述操作后,我們就可在未安裝Matlab的計算機上執行該系統的exe文件。
本文介紹了利用Matlab的GUI界面編程方法構建信號與系統仿真演示系統的方法,并詳細介紹了幾個典型的演示實例。整個系統界面直觀、清晰,導航方便,且配有簡要文字說明,具有良好的人機交互界,可通過滑動條或手動輸入對參數進行修改,并將結果實時顯示在演示界面中。通過該系統的實際應用,學生的學習興趣,也使學生對所學內容課程有了更深刻的理解。
[1] 鄭君里,應啟衍,楊為理.信號與系統(上冊).第二版[M] .北京:高等教育出版社,2005
[2] 鄭君里,應啟衍,楊為理.信號與系統(下冊).第二版[M] .北京:高等教育出版社,2005
[3] 陳垚光,毛濤濤,王正林,王玲.精通MATLAB GUI設計[M] .北京:.電子工業出版社,2008
[4] 張威.MATLAB基礎與編程入門[M] .西安:西安電子科技大學出版社,2004
[5] 甘俊英,胡異丁.基于MATLAB的信號與系統實驗指導[M] .北京:清華大學出版社,2007
[6] 谷源濤,應啟珩,鄭君里.信號與系統——MATLAB綜合實驗[M] .北京:高等教育出版社,2008