摘要 介紹典型周期信號頻譜的數值計算和GUI程序設計的方法和技巧,研制圖形用戶界面程序,并通過任意改變參數進行教學演示,驗證程序的正確性及在教學中的有效作用,以此展示用MATLAB編寫連續信號頻譜分析教學演示程序的優點。
關鍵詞 信號頻譜;教學演示;MATLAB;GUI程序設計
中圖分類號 TN911.7而不厭文獻標識碼 A 文章編號 1671-489X(2008)12-0047-02
1 引言
在“信號與系統”課程的教學中,由于信號的波形多而復雜,這些信號的時域和頻域的波形變換多樣。時域波形與頻域波形有著對應的關系。如何動態地、可交互地顯示信號在時域和頻域的關系,揭示其內在聯系,是學好這門課程的難點。
“信號與系統”課程中在講授“周期矩形波信號的頻譜”一節時,要分2種情況對周期矩形波信號的頻譜進行研究分析。一是當時域信號的周期T不變、矩形脈沖寬度τ變化時,其頻譜的變化規律;二是當時域信號的矩形脈沖寬度τ不變、周期T變化時,其頻譜的變化規律。教師通過黑板繪圖很難講清楚;用PPT演示雖然對問題的理解有所幫助,但圖形仍是靜止的,并且不能交互,即參數是不能改變的。
MATLAB的出現給“信號的頻譜”的教學提供了很大的方便。由于MATLAB的繪圖功能十分強大,特別是MATLAB的GUI程序設計,使研制動態的、可交互的教學演示程序成為可能。
筆者結合周期信號的頻譜教學演示程序的研制,給出了如何應用MATLAB工程計算語言,解決周期信號的頻譜分析,并用GUI程序設計方法來解決周期信號頻譜的計算和演示問題。
2 周期矩形脈沖的頻譜
脈沖幅度為1,寬度為τ的周期矩形脈沖#402;(t),其周期為T,如圖1所示。
將#402;(t)展開為傅里葉級數的指數形式,可由下式求得傅里葉復系數:
用MATLAB實現畫幅頻特性和相頻特性的部分程序為:
tau_T=DUTY;
n0=-25;n1=25;
n=n0:n1;
F_n=tau_T*Sa(tau_T*pi*n).*exp(-j*tau_T*n.*pi);
Fn_max=max(abs(F_n));
Fn_min=min(abs(F_n));df=(Fn_max-Fn_min)*0.1;
stem(n,abs(F_n),'.');
if Fn_min>=0
y0=(Fn_max-Fn_min)/2;
else
y0=0;
end
axis([n0 n1 Fn_min-df Fn_max+df]);grid;
set(gca,'Ytick',[Fn_min,y0,Fn_max])
line([n0 n1],[0 0],'color','r');
title('雙邊幅度頻譜','color','r');
axes(handles.axes5);
stem(n,angle(F_n)*180/pi,'.');
set(gca,'Ytick',[-180,0,180]);grid;
title('雙邊相位頻譜','color','r');
3 頻譜分析的GUI程序設計
所謂GUI程序設計,簡單地說,就是使應用程序具有圖形用戶界面,以方便用戶操作。
在MATLAB中創建圖形用戶界面有2種方法,其一是使用圖形句柄。用這種方法創建圖形界面的過程相當繁瑣,而且在程序編寫好之前,用戶圖形界面是不可見的。為了便于創建圖形用戶界面,MATLAB提供了一個開發環境,幫助用戶創建圖形用戶界面,這就是GUIDE(Graphic User Interface Development Environment )。
圖形用戶界面(GUI)是由窗口、光標、按鍵、菜單、文字說明等對象(Objects)構成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產生某種動作或變化,例如實現計算、繪圖等。如果讀者想向別人提供應用程序,進行某種技術、方法的演示,制作一個供反復使用且操作簡單的專用工具,那么圖形用戶界面也許是最好的選擇之一。
為了對周期信號的頻譜進行研究,筆者編寫了典型周期信號的頻譜分析的GUI程序。該程序有3大功能。
1)可以畫出典型周期信號的頻譜。
2)對周期矩形波周期T不變,矩形寬度τ變化的研究:矩形寬度τ可以任意改變,界面及計算結果如圖2、3所示。
通過演示,可以得出以下結論:
①脈沖寬度τ由大變小,的第一個過零點頻率增大,即帶寬變寬,所以τ就確定了帶寬。
②脈沖寬度t由大變小,頻譜的幅度變小。
③由于周期T不變,頻譜的譜線間隔不變,即 不變。
3)對周期矩形波矩形寬度τ不變,周期T變化的研究:周期T可以任意改變,界面及計算結果如圖4、5所示。
通過演示,可以得出以下結論:
①脈沖寬度τ不變,的第一個過零點頻率不變,即帶寬不變。
②T由小變大,譜線間隔變小,諧波成份豐富,并且頻譜幅度變小。
③T→∞時,譜線間隔→0,這時由周期信號變成非周期信號,離散頻譜變成連續頻譜。
4 結束語
由于MATLAB的強大數值計算和繪圖功能,加之其提供的開發環境,幫助用戶創建圖形用戶界面,從而使連續信號頻譜的計算和可視化變為可能。通過以上實例分析可以看到,應用GUI編程技術可以編寫通用性更強的圖形用戶界面,使周期信號頻譜的教學和研究更加直觀。筆者的實踐證明,這個教學演示程序在教學中效果十分理想。
參考文獻
[1]金波.信號與系統基礎[M].武漢:華中科技大學出版社,2006,8
[2]王宏.MATLAB6.5及其在信號處理中的應用[M].北京:清華大學出版社,2004,10
[3]張昱,周綺敏.信號與系統實驗教程[M].北京:人民郵電出版社,2005