資源簡介
在simulink中應用s函數設計一個連續系統的實例。程序做了詳細的注釋(拜托,簡單的一眼看懂的那種沒有注釋)。
作為入門級的看看比較好。友情提醒:運行前,記得設初值。

代碼片段和文件信息
%對應的系統傳函為G=1/(s+1)狀態空間方程為:dx=-x+u;y=x
%注意:x_initial是狀態變量x的初始值,需要在simulink對系統進行仿真前由用戶在工作空間手工賦值
function?[sysx0strts]?=?sfun_1(txuflagx_initial)
switch?flag
??case?0
????[sysx0strts]=mdlInitializeSizes(x_initial);%初始化子函數
???case?1
????sys=mdlDerivatives(txu);?%微分計算子函數
??case?2
????sys=mdlUpdate(txu);%狀態更新子函數
??case?3
????sys=mdlOutputs(txu);%結果輸出子函數
??case?4
????sys=mdlGetTimeOfNextVarHit(txu);%計算下一個采樣點的絕對時間的子函數
??case?9
????sys=mdlTerminate(txu);%仿真結束子函數
??otherwise
????error([‘Unhandled?flag?=?‘num2str(flag)]);%出錯標記
end
%以下為初始化子函數
function?[sysx0strts]=mdlInitializeSizes(x_initial)
sizes?=?simsizes;%用于設置模塊參數的結構體用simsizes來生成
sizes.NumContStates??=?1;
sizes.NumDiscStates??=?0;
sizes.NumOutputs?????=?1;
sizes.NumInputs??????=?1;
sizes.DirFeedthrough?=?0;%“0”表示:輸入和輸出間不存在直接比例關系
sizes.NumSampleTimes?=?1;???%?
sys?=?simsizes(sizes);%設置完后,賦給sys輸出
x0??=?x_initial;%狀態變量初始值
str?=?[];%固定格式
ts??=?[0?0];%該取值對應純連續系統
%以下為計算模塊導數子函數
function?sys=mdlDerivatives(txu)
dx=-x+u;%對應于該系統的狀態空間方程
sys?=?dx;%把計算得出的導數向量賦給sys輸出
%以下為更新模塊離散狀態子函數
function?sys=mdlUpdate(txu)
sys?=?[];
%以下為計算模塊輸出子函數
function?sys=mdlOutputs(txu)
sys?=?x;%對應于該系統的狀態空間方程
%以下為計算下一個采樣時間點子函數
function?sys=mdlGetTimeOfNextVarHit(txu)
sampleTime?=?1;????%??Example?set?the?next?hit?to?be?one?second?later.
sys?=?t?+?sampleTime;
%以下為仿真結束子函數
function?sys=mdlTerminate(txu)
sys?=?[];
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????15811??2010-03-09?15:10??新建文件夾\sfunc_1.mdl
?????文件???????1734??2010-03-09?15:10??新建文件夾\sfun_1.m
?????目錄??????????0??2010-03-09?15:16??新建文件夾
-----------?---------??----------?-----??----
????????????????17545????????????????????3
評論
共有 條評論