沈媛媛
(長江大學電子信息學院,湖北 荊州 434023)
基于GUI的系統函數零極點與頻率響應演示設計
沈媛媛
(長江大學電子信息學院,湖北 荊州 434023)
Malab中圖形用戶界面(GUI)設計能將復雜程序以簡單直觀的方式表現出來。針對《數字信號處理》課程中較難懂的理論知識,利用GUI界面設計了系統函數零極點與頻率響應關系,并通過界面演示動態的呈現出來。該方法能夠加強學生對《數字信號處理》課程中理論難點知識的理解,同時也能夠擴展應用于其他課程中。
圖形用戶界面(GUI); 零極點;頻率響應
《數字信號處理》是電子信息類專業的理論基礎課,該課程理論性強且涉及知識面廣。在授課過程中,由于大量的理論與數學推導,大部分學生對一些重要的理論常常一知半解。為了讓學生深入淺出,筆者以離散時間信號與系統的變換域分析中系統函數的零極點與頻率響應關系為例,將《數字信號處理》的理論知識與Matlab軟件有機結合起來,利用Matlab的強大的計算仿真功能和方便易用的GUI圖形繪制能力[1]將抽象的數學和技術理論以易于理解的可視化形式展示給學生。
系統函數[2]可以表示為:

(1)
式中,c和d分別為系統函數H(z)的零點和極點。因此,除了一個常數A之外,系統函數可完全由它的零極點來決定。由系統函數可以得到系統的頻率響應為:
(2)
利用系統函數的零點和極點可用幾何的方法確定系統的頻率響應,如圖1所示。

圖1 確定系統的頻率響應的幾何方法
則系統的幅頻響應和相位響應為:

(3)
arg[H(ejω)]=arg[A]+ω(N-M)+(φ1+φ2+…+φM)-(?1+?2+…+?N)
(4)
對于系統函數零極點與頻率響應的理論知識在授課過程中學生通常覺得枯燥難懂,如果利用Matlab軟件仿真演示,則有助于學生的理解。
2.1GUI界面設計
首先新建一個GUI界面,然后對子界面進行系統的界面布局,對子界面的GUI進行添加一些必要的控件。如命令按鈕push button、靜態文本框text、滑動條slider和可編輯文本框edit等[3]。為了能夠在界面上方便的輸入參數,設置2個可編輯文本框(edit),用來輸入系統函數的分子系數num、分母系數den。輸入顯示圖形的具體語句為:
[zer,pol]=tf2zp(num,den);[h,w]=freqz(num,den,’whole’);[phi,w]=phasez(num,den,’whole’);
有了可編輯文本框就必然加一個按鈕(push-button),以便在輸入數據后,按下這個按鈕,3個圖形窗口會根據系統參數顯示圖形,如圖2所示。具體語句為:
a=get(handles.nume,’string’);b=get(handles.dene,’string’);num=str2num([a]); den=str2num([b]);
2.2系統函數零極點與頻率響應動態關系設計

圖2 GUI界面設計
界面的初值設置好以后接下來是找出單位圓上各點與幅頻響應、相頻響應曲線上各點的對應關系。為實現這一目標,調用一個滑動條動態改變w的值,即改變動點在單位圓上的位置,實現互動[4]。程序如下:

滑動條上各點與單位圓上各點一一對應。為實現互動,在set語句對滑動條重新設置的返回語句callback中調用一個callcheck函數,它的功能是在滑動條不斷改變的過程中,根據參數w的不同更新各響應量,實現圖形的動態改變。具體語句為:
sval=get(handles.slider1,’Value’); %slider value
set(handles.edit3,’String’,num2str(sval));
set(handles.w1val,’String’,num2str(sval));
為觀察起來較為明顯,在圖形界面中加上點和線條。在坐標(x,y)處畫一個大小為10的紅色圓點,具體語句如下:
line([0,2],[0,0],’linestyle’,’:’,’color’,’k’,’linewidth’,1);
h1=spline(w,h,sval);
line(sval,h1,’marker’,’.’,’markeredgecolor’,’r’,’markersize’,10);
line([sval,sval],[0,h1],’color’,’m’,’linewidth’,1);
例1已知一系統函數:
H(z)=(0.8-0.44z-1+0.36z-2+0.02z-3)/(1+0.7z-1-0.45z-2-0.6z-3)

圖3 系統函數零極點與頻率響應動態關系圖
在分子系數num窗口中輸入數據0.8,-0.44,0.36,0.02。在分母系數den窗口中輸入數據1,0.7,-0.45,-0.6,得到結果如圖3所示。
通過不斷改變頻率點位置可以發現,當頻率點變到極點附近時,就會在該極點附近的頻率出現峰值,極點越接近單位圓,峰值就越尖銳。同樣,當頻率點變到零點附近時,就會在該零點附近的頻率出現低谷,當零點在單位圓上時,該零點就是傳輸零點。可見在單位圓附近的零極點對系統的幅頻特性有較大的影響。
學生在學習《數字信號處理》課程時已經有了Matlab程序設計的基礎,因此,在理論教學中利用Matlab作為工具進行教學是非常合理的。利用簡單的演示即可把復雜難懂的理論用生動形象的動態演示展示出來,既能夠調動學生在理論學習中的積極性,又能夠做到深入淺出。
[1]張剛,賀利芳,何方白,等.基于Matlab的“數字信號處理”課程教學探索[J].高等教育研究,2007(6):45-46.
[2]劉益成,孫祥娥.數字信號處理[M].北京:電子工業出版社,2004.
[3]王宏.Matlab6.5及其在信號處理中的應用[M].北京:清華大學出版社,2004.
[4]張恒,袁曉,湯韓杰,等.數字系統零極點與頻率特征關系的動畫界面設計[J].電氣電子教學學報,2006(3):102-104.
[編輯] 洪云飛
10.3969/j.issn.1673-1409(N).2012.12.040
N4
A
1673-1409(2012)12-N123-02