主题:求助 S函数的
[em7]大虾们 我第一次编S函数 不知道错在哪里了 望请教下 谢谢了
function [sys,x0,str,ts] = PNGV02(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes()
sizes = simsizes;
sizes.NumContStates = 2;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 5;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [0 0];
function sys=mdlDerivatives(t,x,u)
[A,B,C,D,il]=calcABCD(x,u);
sys =A*x+B*il;
%%%%%%%%%%%%%%%%%%%%
function calcABCD(x,u);
R1=u(1);
C1=u(2);
R2=u(3);
C2=u(4);
P=u(5);
A=[0 0;0 -1/C2*R2];B=[1/C1;1/C2];C=[-1,-1];D=[-R1];
il=((E-x(1)-x(2))-((E-x(1)-x(2))^2-4*R1*P)^0.5)/(2*R1);
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u)
[A,B,C,D,il]=calcABCD(x,u);
Uout=C*x+D*il
sys = [Uou il];
function sys=mdlTerminate(t,x,u)
sys = [];
出错说什么too many output argument。。。
function [sys,x0,str,ts] = PNGV02(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes()
sizes = simsizes;
sizes.NumContStates = 2;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 5;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [0 0];
function sys=mdlDerivatives(t,x,u)
[A,B,C,D,il]=calcABCD(x,u);
sys =A*x+B*il;
%%%%%%%%%%%%%%%%%%%%
function calcABCD(x,u);
R1=u(1);
C1=u(2);
R2=u(3);
C2=u(4);
P=u(5);
A=[0 0;0 -1/C2*R2];B=[1/C1;1/C2];C=[-1,-1];D=[-R1];
il=((E-x(1)-x(2))-((E-x(1)-x(2))^2-4*R1*P)^0.5)/(2*R1);
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u)
[A,B,C,D,il]=calcABCD(x,u);
Uout=C*x+D*il
sys = [Uou il];
function sys=mdlTerminate(t,x,u)
sys = [];
出错说什么too many output argument。。。