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



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


圖2 連續時間系統的零輸入響應
大部分離散時間線性時不變系統可以用常系數線性差分方程表示:

離散時間系統的數值求解在MATLAB中可利用信號處理工具箱中的filter函數,調用形式為:
y=filter(b,a,x,zi)
解:MATLAB源代碼如下,程序運行結果如3所示。觀察發現,輸入有界時,零狀態響應發散,該系統為不穩定系統。



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

圖4 離散時間系統的零輸入響應


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



圖5 兩種方法得到的離散時間系統全響應
結果表明,MATLAB的數值計算和符號計算功能可使線性時不變系統的響應求解過程大大簡化,并能得到可視化效果。文章涉及的是系統時域求解問題,事實上,MATLAB在頻域、復頻域、Z域分析和求解中也得到了廣泛的運用。