?? mssfunqconvert.m
字號(hào):
function [sys,x0,str,ts] = MSSFUNQConvert(t,x,u,flag)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 主要功能:根據(jù)輸入?yún)?shù)flag的數(shù)值調(diào)用相應(yīng)的函數(shù)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch flag
case 0,
%調(diào)用mdlInitializeSizes函數(shù)執(zhí)行初始化
[sys,x0,str,ts]=mdlInitializeSizes;
case 2,
%調(diào)用mdlUpdate函數(shù)計(jì)算離散狀態(tài)的數(shù)值
sys=mdlUpdate(t,x,u);
case 3,
%調(diào)用mdlOutputs函數(shù)計(jì)算輸出信號(hào)的數(shù)值
sys=mdlOutputs(t,x,u);
case {1,4,9}
%沒(méi)有相應(yīng)的操作(沒(méi)有連續(xù)狀態(tài))
sys=[];
otherwise
error(['Unhandled flag=',num2str(flag)]);
end
%end MS_SFUN_QConvert
%=======================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=======================================================================
%
function [sys,x0,str,ts] = mdlInitializeSizes
%調(diào)用simsizes獲得一個(gè)用于存放長(zhǎng)度信息的結(jié)構(gòu)
sizes = simsizes;
%設(shè)置連續(xù)狀態(tài)的個(gè)數(shù)
sizes.NumContStates = 0;
%設(shè)置兩個(gè)離散狀態(tài)
sizes.NumDiscStates =2;
%設(shè)置輸出信號(hào)的個(gè)數(shù)為1
sizes.NumOutputs =1;
%設(shè)置輸入信號(hào)的個(gè)數(shù)為1
sizes.NumInputs = 1;
%設(shè)置直接反饋的狀態(tài),0表示沒(méi)有直接反饋,1表示存在直接反饋
sizes.DirFeedthrough = 1;
%設(shè)置抽樣時(shí)間的個(gè)數(shù)(大于等于1)
sizes.NumSampleTimes = 1;
%通過(guò)simsizes把sizes結(jié)構(gòu)返回給sys
sys = simsizes(sizes);
%設(shè)置S函數(shù)的初始狀態(tài)x0
x0 = [0 0]';
%設(shè)置S函數(shù)的保留參數(shù)str(應(yīng)該設(shè)置為空向量
str = [];
%初始化抽樣時(shí)間
ts = [-1 0];
% end mdlInitializeSizes
%
%=======================================================================
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%=======================================================================
%
function sys = mdlUpdate(t,x,u)
%就算S函數(shù)的離散狀態(tài)并且通過(guò)sys參數(shù)返回給Simulink
if x(1)==0
x(2)=-1*u;
x(1)=1;
else
x(1)=0;
end
sys=x;
%end mdlUpdate
%
%=======================================================================
% mdlOutputs
% Return the output vector for the S-function
%=======================================================================
%
function sys = mdlOutputs(t,x,u)
%就算S函數(shù)的輸出信號(hào)并且通過(guò)sys參數(shù)返回給Simulink
if x(1)==0
sys=u;
else
sys=x(2);
end
%end mdlOutputs
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -