孫會蘋 張睿 朱桐萱



摘要:本文基于MATLAB將卷積過程及零極矢量與幅頻特性關系的問題利用GUI界面動態顯示出來。首先介紹了線性卷積、循環卷積、零極矢量與幅頻特性的動態演示實現,再通過MATLAB的底層編碼,利用基本控件實現GUI界面設計。此設計可直接應用于數字信號處理的教學演示中。
關鍵詞:數字信號處理;MATLAB;動態演示;GUI界面設計
中圖分類號:TP391.9 文獻標識碼:A 文章編號:1007-9416(2018)12-0088-02
MATLAB的信號處理工具提供了很多數字信號處理的需要的函數及解決方法,本文即是利用MATLAB語言編程設計一個動態演示界面,該界面可演示線性卷積及循環卷積實現過程,也可實現零極矢量對幅頻特性關系的動態演示。
1 MATLAB時域卷積的動態演示實現
1.1 時域線性卷積的動態演示實現
線性卷積(linear convolution)在時域描述線性系統輸入和輸出關系的一種運算,對于線性時不變離散系統來說,若序列x(n)是系統的輸入,h(n)是系統在單位脈沖作用下的單位脈沖響應,則由于輸入序列x(n)可表示為一系列脈沖的線性組合,y(n)即是x(n)與h(n)的卷積。,若x(n)長度為M,h(n)長度為N,則y(n)的長度為L=M+N-1。
線性卷積的實現步驟可簡單概述為:換元、翻轉、移位、相乘、相加。MATLAB中有conv函數可直接調用,為了更好地理解卷積運算,自己編寫程序,實現其運算并觀測每一個實現步驟。
其關鍵語句如下:
M=length(xn),N=length(hn)
m=[-(M-1):M+N-2]
hm=[zeros(1,M-1),hn,zeros(1,M-1)]
xmfy=[fliplr(xn),zeros(1,M+N-2)]
yn(M+n)=sum(xmfy.*hm)
1.2 時域循環卷積動態演示實現
循環卷積(circular convolution)是周期卷積的一種。循環卷積的長度大于兩序列線性卷積長度時,可用線性卷積計算。
1.2.1 循環卷積計算步驟
(1)經周期延拓得到,經反轉,取主值區間得到。
(2)循環移位得,n>0,循環右移。
(3)n取0,1,....,N-1不同的值,N=max(N1,N2),對應的序列相乘相加得到結果。
1.2.2 有限長序列循環卷積矩陣形式
上式中右邊第一個矩陣稱為x(n)的L點循環矩陣,它的特點是:(1)第一行是x(n)的L點循環倒相。x(0)不動,后面其它反轉180°放在他的后面。(2)第二行是第一行向右循環移一位。(3)第三行是第二行向右循環移一位;依次類推。
關鍵語句如下:
M=length(xn),N=length(hn),L=input(‘L=)
xm=[xn,zeros(1,L-M)],hm=[hn,zeros(1,L-N)]
ycn=zeros(1,L);
for n=0:L-1
xn_m=xm(mod(n-m,L)+1);
ycn(n+1)=sum(xn_m.*hm);
pause(0.5);
End
2 數字系統的零極點位置與幅頻特性關系的動態演示
2.1 系統函數的零極點與幅頻特性關系
系統函數:
,令
w由0到2π,即零/極矢量的終端點沿單位圓逆時針方向旋轉一周,可由從零/極矢量長度的變化情況估算出系統的幅頻特性。
2.2 零極矢量與幅頻特性關系動態演示實現過程
輸入分子分母系數,在零極點圖的基礎上顯示零極矢量的動態變化過程,畫出系統函數的幅頻特性圖。關鍵語句如下:
[zs,ps,k]=tf2zp(A,B);
e=real(z(n));f=imag(z(n));
x=real(p(n));y=imag(p(n));
plot([e,cos(k*pi/10)],[f,sin(k*pi/10)],'-');
plot([x,cos(k*pi/10)],[y,sin(k*pi/10)],'-');
zplane(A,B);
[Hk,w]=freqz(A,B,'whole');
plot(w/pi,abs(Hk)/max(abs(Hk)));
3 GUI界面設計
(1)例線性卷積可編輯文本框輸入序列的捕捉,點擊鼠標右鍵,選擇Callback:在function edit1_Callback(hObject, eventdata, handles)下加入:
全局變量的調用global xn;
將字符串轉換為數值xn=str2num(get(hObject,'String'));
卷積長度文本框L變為L=str2double(get(hObject,'String'));
(2)按鈕及坐標軸的設置,第一,按鈕設置,在function pushbutton1_Callback(hObject, eventdata, handles)下,引用全局變量global xn;global hn,填寫基礎程序;第二,坐標軸設置:a)axes(handles.axes1);stem(m,xm,'r');b)stem(handles.axes3,m,xmfy,'b.')
(3)含輸入的輸出界面顯示如圖1所示。
4 結語
本文介紹方法可用于卷積運算、系統零極點與頻率特征關系等方面,作為系統運用于教學過程中去,可使學生更好地理解運算過程,提高了數字信號處理的教學質量,也推動了理論教學的可視化。
參考文獻
[1]孫明,鄧羽.提高“信號處理原理”課程教學效果的實踐[J].南京:電氣電子教學學報,2004,26(6):116-118.
[2]張恒,袁曉,湯韓杰,帥曉飛.數字系統零極點與頻率特征關系的動畫界面設計.電氣電子教學學報,2006,28(03):32.
[3]楊永雙,韓雪琴.基于Matlab的時域卷積的動態演示的實現.計算機與信息技術,2007,(3):38-39.
Dynamic Interface Demonstration Based on Convolution and the Relation Between Zero-Pole and Amplitude-Frequency Characteristics
SUN Hui-ping,ZHANG Run,ZHU Tong-xuan
(School of Electronic Information Engineering, Shandong University of Science and Technology,Qingdao Shandong? 266000)
Abstract:In this paper, the convolution process and the relationship between zero-pole vector and amplitude-frequency characteristics are dynamically displayed using the GUI interface based on MATLAB. Firstly, the dynamic demonstration realization of linear convolution, cyclic convolution, zero-pole vector and amplitude-frequency characteristics is introduced separately. Then through the bottom coding of MATLAB, GUI interface design is realized by using basic controls? This design can be directly applied to the teaching demonstration of digital signal processing .
Key words:digital signal processing; MATLAB; dynamic demonstration; GUI interface design