孫會(huì)蘋 張睿 朱桐萱
摘要:本文基于MATLAB將卷積過(guò)程及零極矢量與幅頻特性關(guān)系的問(wèn)題利用GUI界面動(dòng)態(tài)顯示出來(lái)。首先介紹了線性卷積、循環(huán)卷積、零極矢量與幅頻特性的動(dòng)態(tài)演示實(shí)現(xiàn),再通過(guò)MATLAB的底層編碼,利用基本控件實(shí)現(xiàn)GUI界面設(shè)計(jì)。此設(shè)計(jì)可直接應(yīng)用于數(shù)字信號(hào)處理的教學(xué)演示中。
關(guān)鍵詞:數(shù)字信號(hào)處理;MATLAB;動(dòng)態(tài)演示;GUI界面設(shè)計(jì)
中圖分類號(hào):TP391.9 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)12-0088-02
MATLAB的信號(hào)處理工具提供了很多數(shù)字信號(hào)處理的需要的函數(shù)及解決方法,本文即是利用MATLAB語(yǔ)言編程設(shè)計(jì)一個(gè)動(dòng)態(tài)演示界面,該界面可演示線性卷積及循環(huán)卷積實(shí)現(xiàn)過(guò)程,也可實(shí)現(xiàn)零極矢量對(duì)幅頻特性關(guān)系的動(dòng)態(tài)演示。
1 MATLAB時(shí)域卷積的動(dòng)態(tài)演示實(shí)現(xiàn)
1.1 時(shí)域線性卷積的動(dòng)態(tài)演示實(shí)現(xiàn)
線性卷積(linear convolution)在時(shí)域描述線性系統(tǒng)輸入和輸出關(guān)系的一種運(yùn)算,對(duì)于線性時(shí)不變離散系統(tǒng)來(lái)說(shuō),若序列x(n)是系統(tǒng)的輸入,h(n)是系統(tǒng)在單位脈沖作用下的單位脈沖響應(yīng),則由于輸入序列x(n)可表示為一系列脈沖的線性組合,y(n)即是x(n)與h(n)的卷積。,若x(n)長(zhǎng)度為M,h(n)長(zhǎng)度為N,則y(n)的長(zhǎng)度為L(zhǎng)=M+N-1。
線性卷積的實(shí)現(xiàn)步驟可簡(jiǎn)單概述為:換元、翻轉(zhuǎn)、移位、相乘、相加。MATLAB中有conv函數(shù)可直接調(diào)用,為了更好地理解卷積運(yùn)算,自己編寫程序,實(shí)現(xiàn)其運(yùn)算并觀測(cè)每一個(gè)實(shí)現(xiàn)步驟。
其關(guān)鍵語(yǔ)句如下:
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 時(shí)域循環(huán)卷積動(dòng)態(tài)演示實(shí)現(xiàn)
循環(huán)卷積(circular convolution)是周期卷積的一種。循環(huán)卷積的長(zhǎng)度大于兩序列線性卷積長(zhǎng)度時(shí),可用線性卷積計(jì)算。
1.2.1 循環(huán)卷積計(jì)算步驟
(1)經(jīng)周期延拓得到,經(jīng)反轉(zhuǎn),取主值區(qū)間得到。
(2)循環(huán)移位得,n>0,循環(huán)右移。
(3)n取0,1,....,N-1不同的值,N=max(N1,N2),對(duì)應(yīng)的序列相乘相加得到結(jié)果。
1.2.2 有限長(zhǎng)序列循環(huán)卷積矩陣形式
上式中右邊第一個(gè)矩陣稱為x(n)的L點(diǎn)循環(huán)矩陣,它的特點(diǎn)是:(1)第一行是x(n)的L點(diǎn)循環(huán)倒相。x(0)不動(dòng),后面其它反轉(zhuǎn)180°放在他的后面。(2)第二行是第一行向右循環(huán)移一位。(3)第三行是第二行向右循環(huán)移一位;依次類推。
關(guān)鍵語(yǔ)句如下:
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 數(shù)字系統(tǒng)的零極點(diǎn)位置與幅頻特性關(guān)系的動(dòng)態(tài)演示
2.1 系統(tǒng)函數(shù)的零極點(diǎn)與幅頻特性關(guān)系
系統(tǒng)函數(shù):
,令
w由0到2π,即零/極矢量的終端點(diǎn)沿單位圓逆時(shí)針?lè)较蛐D(zhuǎn)一周,可由從零/極矢量長(zhǎng)度的變化情況估算出系統(tǒng)的幅頻特性。
2.2 零極矢量與幅頻特性關(guān)系動(dòng)態(tài)演示實(shí)現(xiàn)過(guò)程
輸入分子分母系數(shù),在零極點(diǎn)圖的基礎(chǔ)上顯示零極矢量的動(dòng)態(tài)變化過(guò)程,畫出系統(tǒng)函數(shù)的幅頻特性圖。關(guān)鍵語(yǔ)句如下:
[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界面設(shè)計(jì)
(1)例線性卷積可編輯文本框輸入序列的捕捉,點(diǎn)擊鼠標(biāo)右鍵,選擇Callback:在function edit1_Callback(hObject, eventdata, handles)下加入:
全局變量的調(diào)用global xn;
將字符串轉(zhuǎn)換為數(shù)值xn=str2num(get(hObject,'String'));
卷積長(zhǎng)度文本框L變?yōu)長(zhǎng)=str2double(get(hObject,'String'));
(2)按鈕及坐標(biāo)軸的設(shè)置,第一,按鈕設(shè)置,在function pushbutton1_Callback(hObject, eventdata, handles)下,引用全局變量global xn;global hn,填寫基礎(chǔ)程序;第二,坐標(biāo)軸設(shè)置:a)axes(handles.axes1);stem(m,xm,'r');b)stem(handles.axes3,m,xmfy,'b.')
(3)含輸入的輸出界面顯示如圖1所示。
4 結(jié)語(yǔ)
本文介紹方法可用于卷積運(yùn)算、系統(tǒng)零極點(diǎn)與頻率特征關(guān)系等方面,作為系統(tǒng)運(yùn)用于教學(xué)過(guò)程中去,可使學(xué)生更好地理解運(yùn)算過(guò)程,提高了數(shù)字信號(hào)處理的教學(xué)質(zhì)量,也推動(dòng)了理論教學(xué)的可視化。
參考文獻(xiàn)
[1]孫明,鄧羽.提高“信號(hào)處理原理”課程教學(xué)效果的實(shí)踐[J].南京:電氣電子教學(xué)學(xué)報(bào),2004,26(6):116-118.
[2]張恒,袁曉,湯韓杰,帥曉飛.數(shù)字系統(tǒng)零極點(diǎn)與頻率特征關(guān)系的動(dòng)畫界面設(shè)計(jì).電氣電子教學(xué)學(xué)報(bào),2006,28(03):32.
[3]楊永雙,韓雪琴.基于Matlab的時(shí)域卷積的動(dòng)態(tài)演示的實(shí)現(xiàn).計(jì)算機(jī)與信息技術(shù),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