MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]请问一下,sfunction的flag位,在simulink中是如何给出的? (https://www.labfans.com/bbs/showthread.php?t=3312)

xs1119 2008-05-28 15:26

[求助]请问一下,sfunction的flag位,在simulink中是如何给出的?
 
我看仿真程序,其中Sfunction不知道如何给出的flag位的值,规则是什么?


附:程序

function [sys,x0,str,ts] =spacemode(t,x,u,flag)

switch [COLOR="DarkRed"]flag,[/COLOR]
case [COLOR="Red"]0[/COLOR],
[sys,x0,str,ts]=mdlInitializeSizes;
case [COLOR="Red"]1[/COLOR],
sys=mdlDerivatives(t,x,u);
case[COLOR="red"] 3[/COLOR],
sys=mdlOutputs(t,x,u);
case [COLOR="red"]{2,4,9}[/COLOR]
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 2;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 3;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % At least one sample time is needed
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [0 0];

function sys=mdlDerivatives(t,x,u) %Time-varying model
kp=10;
ki=2;
kd=1;

ut=kp*u(1)+ki*u(2)+kd*u(3);

J=20+10*sin(6*pi*t);
K=400+300*sin(2*pi*t);

sys(1)=x(2);
sys(2)=-J*x(2)+K*ut;

function sys=mdlOutputs(t,x,u)

sys(1)=x(1);

[IMG]C:\Documents and Settings\Administrator\桌面\00[/IMG]


所有时间均为北京时间。现在的时间是 08:07

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.