摘要 介紹典型周期信號(hào)頻譜的數(shù)值計(jì)算和GUI程序設(shè)計(jì)的方法和技巧,研制圖形用戶界面程序,并通過(guò)任意改變參數(shù)進(jìn)行教學(xué)演示,驗(yàn)證程序的正確性及在教學(xué)中的有效作用,以此展示用MATLAB編寫(xiě)連續(xù)信號(hào)頻譜分析教學(xué)演示程序的優(yōu)點(diǎn)。
關(guān)鍵詞 信號(hào)頻譜;教學(xué)演示;MATLAB;GUI程序設(shè)計(jì)
中圖分類(lèi)號(hào) TN911.7而不厭文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1671-489X(2008)12-0047-02
1 引言
在“信號(hào)與系統(tǒng)”課程的教學(xué)中,由于信號(hào)的波形多而復(fù)雜,這些信號(hào)的時(shí)域和頻域的波形變換多樣。時(shí)域波形與頻域波形有著對(duì)應(yīng)的關(guān)系。如何動(dòng)態(tài)地、可交互地顯示信號(hào)在時(shí)域和頻域的關(guān)系,揭示其內(nèi)在聯(lián)系,是學(xué)好這門(mén)課程的難點(diǎn)。
“信號(hào)與系統(tǒng)”課程中在講授“周期矩形波信號(hào)的頻譜”一節(jié)時(shí),要分2種情況對(duì)周期矩形波信號(hào)的頻譜進(jìn)行研究分析。一是當(dāng)時(shí)域信號(hào)的周期T不變、矩形脈沖寬度τ變化時(shí),其頻譜的變化規(guī)律;二是當(dāng)時(shí)域信號(hào)的矩形脈沖寬度τ不變、周期T變化時(shí),其頻譜的變化規(guī)律。教師通過(guò)黑板繪圖很難講清楚;用PPT演示雖然對(duì)問(wèn)題的理解有所幫助,但圖形仍是靜止的,并且不能交互,即參數(shù)是不能改變的。
MATLAB的出現(xiàn)給“信號(hào)的頻譜”的教學(xué)提供了很大的方便。由于MATLAB的繪圖功能十分強(qiáng)大,特別是MATLAB的GUI程序設(shè)計(jì),使研制動(dòng)態(tài)的、可交互的教學(xué)演示程序成為可能。
筆者結(jié)合周期信號(hào)的頻譜教學(xué)演示程序的研制,給出了如何應(yīng)用MATLAB工程計(jì)算語(yǔ)言,解決周期信號(hào)的頻譜分析,并用GUI程序設(shè)計(jì)方法來(lái)解決周期信號(hào)頻譜的計(jì)算和演示問(wèn)題。
2 周期矩形脈沖的頻譜
脈沖幅度為1,寬度為τ的周期矩形脈沖#402;(t),其周期為T(mén),如圖1所示。
將#402;(t)展開(kāi)為傅里葉級(jí)數(shù)的指數(shù)形式,可由下式求得傅里葉復(fù)系數(shù):
用MATLAB實(shí)現(xiàn)畫(huà)幅頻特性和相頻特性的部分程序?yàn)椋?/p>
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,F(xiàn)n_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程序設(shè)計(jì)
所謂GUI程序設(shè)計(jì),簡(jiǎn)單地說(shuō),就是使應(yīng)用程序具有圖形用戶界面,以方便用戶操作。
在MATLAB中創(chuàng)建圖形用戶界面有2種方法,其一是使用圖形句柄。用這種方法創(chuàng)建圖形界面的過(guò)程相當(dāng)繁瑣,而且在程序編寫(xiě)好之前,用戶圖形界面是不可見(jiàn)的。為了便于創(chuàng)建圖形用戶界面,MATLAB提供了一個(gè)開(kāi)發(fā)環(huán)境,幫助用戶創(chuàng)建圖形用戶界面,這就是GUIDE(Graphic User Interface Development Environment )。
圖形用戶界面(GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說(shuō)明等對(duì)象(Objects)構(gòu)成的一個(gè)用戶界面。用戶通過(guò)一定的方法(如鼠標(biāo)或鍵盤(pán))選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,例如實(shí)現(xiàn)計(jì)算、繪圖等。如果讀者想向別人提供應(yīng)用程序,進(jìn)行某種技術(shù)、方法的演示,制作一個(gè)供反復(fù)使用且操作簡(jiǎn)單的專(zhuān)用工具,那么圖形用戶界面也許是最好的選擇之一。
為了對(duì)周期信號(hào)的頻譜進(jìn)行研究,筆者編寫(xiě)了典型周期信號(hào)的頻譜分析的GUI程序。該程序有3大功能。
1)可以畫(huà)出典型周期信號(hào)的頻譜。
2)對(duì)周期矩形波周期T不變,矩形寬度τ變化的研究:矩形寬度τ可以任意改變,界面及計(jì)算結(jié)果如圖2、3所示。
通過(guò)演示,可以得出以下結(jié)論:
①脈沖寬度τ由大變小,的第一個(gè)過(guò)零點(diǎn)頻率增大,即帶寬變寬,所以τ就確定了帶寬。
②脈沖寬度t由大變小,頻譜的幅度變小。
③由于周期T不變,頻譜的譜線間隔不變,即 不變。
3)對(duì)周期矩形波矩形寬度τ不變,周期T變化的研究:周期T可以任意改變,界面及計(jì)算結(jié)果如圖4、5所示。
通過(guò)演示,可以得出以下結(jié)論:
①脈沖寬度τ不變,的第一個(gè)過(guò)零點(diǎn)頻率不變,即帶寬不變。
②T由小變大,譜線間隔變小,諧波成份豐富,并且頻譜幅度變小。
③T→∞時(shí),譜線間隔→0,這時(shí)由周期信號(hào)變成非周期信號(hào),離散頻譜變成連續(xù)頻譜。
4 結(jié)束語(yǔ)
由于MATLAB的強(qiáng)大數(shù)值計(jì)算和繪圖功能,加之其提供的開(kāi)發(fā)環(huán)境,幫助用戶創(chuàng)建圖形用戶界面,從而使連續(xù)信號(hào)頻譜的計(jì)算和可視化變?yōu)榭赡?。通過(guò)以上實(shí)例分析可以看到,應(yīng)用GUI編程技術(shù)可以編寫(xiě)通用性更強(qiáng)的圖形用戶界面,使周期信號(hào)頻譜的教學(xué)和研究更加直觀。筆者的實(shí)踐證明,這個(gè)教學(xué)演示程序在教學(xué)中效果十分理想。
參考文獻(xiàn)
[1]金波.信號(hào)與系統(tǒng)基礎(chǔ)[M].武漢:華中科技大學(xué)出版社,2006,8
[2]王宏.MATLAB6.5及其在信號(hào)處理中的應(yīng)用[M].北京:清華大學(xué)出版社,2004,10
[3]張昱,周綺敏.信號(hào)與系統(tǒng)實(shí)驗(yàn)教程[M].北京:人民郵電出版社,2005