複製鏈接
請複製以下鏈接發送給好友

S-函數

鎖定
S-函數是系統函數(System Function)的簡稱,又稱S-function。常用MATLAB編寫。
中文名
S-函數
外文名
S-function
用    途
常用MATLAB編寫
別    稱
S-function
函數簡介
S-函數是系統函數(System Function)的簡稱,是指採用非圖形化的方式(即計算機語言,區別於Simulink的系統模塊)描述的一個功能塊。用户可以採用MATLAB代碼,C,C++,FORTRAN等語言編寫S-函數。S-函數由一種特定的語法構成,用來描述並實現連續系統、離散系統以及複合系統等動態系統;S-函數能夠接受來自Simulink求解器的相關信息,並對求解器發出的命令作出適當的響應,這種交互作用非常類似於Simulink系統模塊與求解器的交互作用。一個結構體系完整的S-函數包含了描述動態系統所需的全部能力,所有其他的使用情況都是這個結構體系的特例。往往S-函數模塊是整個Simulink動態系統的核心。
根據S-函數代碼使用的編程語言,S-函數可以分成M文件S-函數(即用MATLAB語言編寫的S-函數)、C語言S-函數、C++語言S-函數以及Fortran語言S-函數等。通過S-函數創建的模塊具有與Simulink模型庫中的模塊相同的特徵,它可以與Simulink求解器進行交互,支持連續狀態和離散狀態模型。
S-函數作為與其他語言相結合的接口,可以使用這個語言所提供的強大能力。例如,Matlab語言編寫的S-函數可以充分利用MATLAB所提供的豐富資源,方便地調用各種工具箱函數和圖形函數;使用C語言編寫的S-函數可以實現對操作系統的訪問,如實現與其他進程的通信和同步等。
用户可能會有如下的疑問:Simulink已經提供了大量的內置的系統模塊,並且允許用户自定義模塊,那麼為何還要使用S-函數呢?誠然,對於大多數動態系統仿真分析語言,使用Simulink提供的模塊即可實現,而無需使用S-函數。但是,當需要開發一個新的通用的模塊作為一個獨立的功能單元時,使用S-函數實現則是一種相當簡便的方法。另外,由於S-函數可以使用多種語言編寫,因此可以將已有的代碼結合進來,而不需要在Simulink中重新實現算法,從而在某種程度上實現了代碼移植。此外,在S-函數中使用文本方式輸入公式、方程,非常適合複雜動態系統的數學描述,並且在仿真過程中可以對仿真進行更精確的控制。
簡單的來説,用户可以從如下的幾個角度來理解S-函數:
(1) S-函數為Simulink的“系統”函數。
(2)能夠響應Simulink為求解器命令的函數。
(3)採用非圖形化的方法實現一個動態系統。
(4)可以開發新的Simulink模塊。
(5)可以與已有的代碼相結合進行仿真。
(6)採用文本方式輸入複雜的系統方程。
(7)擴展Simulink功能。M文件S-函數可以擴展圖形能力,C MEX S-函數可以提供與操作系統的接口。
(8)S-函數的語法結構是為實現一個動態系統而設計的(默認用法),其他S-函數的用法是默認用法的特例(如用於顯示目的)。