Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-04-24
年龄: 43
帖子: 21
声望力: 18 ![]() |
![]()
我看仿真程序,其中Sfunction不知道如何给出的flag位的值,规则是什么?
附:程序 function [sys,x0,str,ts] =spacemode(t,x,u,flag) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 3, sys=mdlOutputs(t,x,u); case {2,4,9} 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] |
![]() |
![]() |