安成錦,楊俊剛,王雪瑩,吳 京
(國(guó)防科技大學(xué)電子科學(xué)學(xué)院,湖南 長(zhǎng)沙 410073)
系統(tǒng)的時(shí)域分析是指在給定的激勵(lì)作用下,通過(guò)不同的數(shù)學(xué)方法求解系統(tǒng)的響應(yīng)。為了確定線性時(shí)不變系統(tǒng)對(duì)給定激勵(lì)的響應(yīng),需要建立描述該系統(tǒng)的方程,并給出一定的初始狀態(tài)。如果把對(duì)系統(tǒng)的定性和定量分析限定在時(shí)域內(nèi),這就是系統(tǒng)的時(shí)域分析法[1]。
利用手工求解方程,尤其是高階方程有一定的難度。將MATLAB引入到信號(hào)與系統(tǒng)分析中,把常用的求解方法編寫(xiě)成MATLAB代碼,供求解實(shí)際問(wèn)題時(shí)直接使用。既可以避免煩瑣的數(shù)學(xué)運(yùn)算,簡(jiǎn)化問(wèn)題的求解過(guò)程,又可以實(shí)現(xiàn)分析結(jié)果的可視化[2]。
但目前“信號(hào)與系統(tǒng)”方面的書(shū)籍,要么沒(méi)有介紹系統(tǒng)求解的MATLAB實(shí)現(xiàn)[3][4],要么僅介紹了零輸入響應(yīng)求解,缺少完整的連續(xù)、離散系統(tǒng)的零輸入、零狀態(tài)響應(yīng)MATLAB求解方法[5][6]。本文首先介紹了利用MATLAB從時(shí)域求解連續(xù)系統(tǒng)的方法,接著介紹了求解離散系統(tǒng)的方法,最后對(duì)結(jié)果進(jìn)行了一定的分析。
連續(xù)時(shí)間系統(tǒng)的數(shù)值求解在MATLAB中可利用控制系統(tǒng)工具箱中的lsim函數(shù),調(diào)用形式為:
lsim(sys,u,t,x0)
其中sys是系統(tǒng)的表示,向量u和t分別表示輸入信號(hào)和時(shí)間t的抽樣值,向量x0表示系統(tǒng)的初始狀態(tài),缺省值為0,返回值為系統(tǒng)的輸出。如果調(diào)用lsim(sys,u,t),得到的結(jié)果即為系統(tǒng)的零狀態(tài)響應(yīng)。
解:MATLAB源代碼如下,程序運(yùn)行結(jié)果如圖1所示。



圖1 連續(xù)時(shí)間系統(tǒng)的零狀態(tài)響應(yīng)
通常認(rèn)為將lsim函數(shù)的輸入信號(hào)置零,再將初始狀態(tài)代入x0,則可得到連續(xù)時(shí)間系統(tǒng)的零輸入響應(yīng)。但事實(shí)上lsim函數(shù)只能對(duì)狀態(tài)方程描述的系統(tǒng)計(jì)算零輸入響應(yīng),對(duì)前面得到的輸入-輸出系統(tǒng)的表示失效[7]。雖然在MATLAB中沒(méi)有專門(mén)的函數(shù)求解連續(xù)時(shí)間系統(tǒng)零輸入響應(yīng)的數(shù)值解,但可利用dsolve函數(shù)得出解析解。調(diào)用形式為:
S=dsolve(eqn,cond)
其中eqn為方程,cond為初始條件。
解:MATLAB源代碼如下,程序運(yùn)行結(jié)果如圖2所示。


圖2 連續(xù)時(shí)間系統(tǒng)的零輸入響應(yīng)
大部分離散時(shí)間線性時(shí)不變系統(tǒng)可以用常系數(shù)線性差分方程表示:

離散時(shí)間系統(tǒng)的數(shù)值求解在MATLAB中可利用信號(hào)處理工具箱中的filter函數(shù),調(diào)用形式為:
y=filter(b,a,x,zi)
解:MATLAB源代碼如下,程序運(yùn)行結(jié)果如3所示。觀察發(fā)現(xiàn),輸入有界時(shí),零狀態(tài)響應(yīng)發(fā)散,該系統(tǒng)為不穩(wěn)定系統(tǒng)。



圖3 離散時(shí)間系統(tǒng)的零狀態(tài)響應(yīng)
通常認(rèn)為將filter函數(shù)的輸入信號(hào)置零,再將初始狀態(tài)代入x0,則可得到離散時(shí)間系統(tǒng)的零輸入響應(yīng)。但與連續(xù)時(shí)間系統(tǒng)的lsim函數(shù)類似,filter函數(shù)只能對(duì)狀態(tài)方程描述的系統(tǒng)計(jì)算計(jì)算零輸入響應(yīng)。在MATLAB中,有專門(mén)的函數(shù)將初始狀態(tài)由傳遞函數(shù)描述的系統(tǒng)轉(zhuǎn)換成狀態(tài)方程描述的系統(tǒng),調(diào)用形式為:
z=filtic(b,a,y,x)
其中b、a還是輸入、輸出信號(hào)的系數(shù)向量;y表示輸出;x表示輸入,缺省值為0;z表示狀態(tài)方程的初始狀態(tài)。
得到z后,再將其代入filter函數(shù),并令輸入為零,即可得到系統(tǒng)的零輸入響應(yīng)。
解:MATLAB源代碼如下,程序運(yùn)行結(jié)果如圖4所示。

圖4 離散時(shí)間系統(tǒng)的零輸入響應(yīng)


對(duì)于離散時(shí)間系統(tǒng)全響應(yīng)求解,可以利用filter函數(shù),代入輸入序列和初始狀態(tài)直接得出;也可以將差分方程進(jìn)行一定的整理,將輸出y(n)單獨(dú)放在等號(hào)一邊,對(duì)于例4,即為,然后編程迭代得到。
解:MATLAB源代碼如下,程序運(yùn)行結(jié)果如圖5所示,比較發(fā)現(xiàn)兩種方法得到的全響應(yīng)相等。



圖5 兩種方法得到的離散時(shí)間系統(tǒng)全響應(yīng)
結(jié)果表明,MATLAB的數(shù)值計(jì)算和符號(hào)計(jì)算功能可使線性時(shí)不變系統(tǒng)的響應(yīng)求解過(guò)程大大簡(jiǎn)化,并能得到可視化效果。文章涉及的是系統(tǒng)時(shí)域求解問(wèn)題,事實(shí)上,MATLAB在頻域、復(fù)頻域、Z域分析和求解中也得到了廣泛的運(yùn)用。