编写matlab s函数,运行时老是出现“??? Input argument "flag" is undefined.”这样的错误,为何?

编写s函数出现flag是undefined的报错
我的代码是:
轧制力计算模块s-function函数程序
function[sys,x0,str,ts]=rollforce(t,x,u,flag,v,E,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,C,chem,m)

%Parameter
%R 轧辊原始半径
%v 泊松系数
%E 杨氏模量
%a1---a5 摩擦系数对应参数
%b1---b5 变形抗力对应参数
%C 带钢含碳量
%chem 化学成分总系数
%m 后张力加权系数
%1-m 前张力加权系数

%Input
%u(1)---H 入口厚度
%u(2)---h 出口厚度
%u(3)---W 宽度
%u(4)---T 温度
%u(5)---v0 轧辊线速度
%u(6)---Ten_b 前张力
%u(7)---Ten_a 后张力
%u(8)---R 轧辊压扁前半径

%Output
%sys--- F 轧制力
%--- K_m 变形抗力
%--- R_p 轧辊压扁后半径
%--- L_c 接触弧长
%--- Q_f 摩擦系数

switchflag,
case0,
[sys,x0,str,ts]=mdlInitializeSizes;
case3,
sys=mdlOutputs(t,x,u,v,E,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,C,chem,m);
case{ 1,2,4,9 },
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end

function[sys,x0,str,ts]=mdlInitializeSizes
sizes= simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs= 5;
sizes.NumInputs= 8;
sizes.DirFeedthrough= 1;
sizes.NumSampleTimes= 1;
sys= simsizes(sizes);
x0 =[];
str= [];
ts =[0 0];

functionsys=mdlOutputs(t,x,u,v,E,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,C,chem,m)
if(u(1)>u(2))
Delta_h=u(1)-u(2);
else
Delta_h=1e-6;
End

r=Delta_h /u(1);
q1=a1+a2*r;
q2=a3+a4*r+a5*(r^2);
%变形抗力单元epsilon---变形程度velocity---变形速率K_m---变形抗力
epsilon=log(u(1)/u(2));
velocity=1000*epsilon*u(5)/sqrt(u(8)*Delta_h);
K_m=chem*exp(b1+b2*C+b3/u(4))*(epsilon^b4)*(velocity^b5);
%轧辊压扁半径单元temp, A ,B---临时变量L_c---接触弧长R_p---轧辊压扁半径
temp=16*(1-v^2)/(pi*E);
A=Delta_h-temp*K_m*q2*u(8)*sqrt(r/(1-r));
B=temp*K_m*q1*sqrt(u(8)*Delta_h);
R_p=u(8)*((B+sqrt(B^2+4*A*Delta_h))/(2*A))^2;
L_c=sqrt(R_p*Delta_h);
%摩擦系数单元Q_f---摩擦系数
Q_f=q1+q2*sqrt(R_p/u(2));
%张力因子单元N_t---张力因子
N_t=1-(m*u(7)+(1-m)*u(6))/K_m;
%轧制力结果
F=u(3)*L_c*K_m*Q_f*N_t;
%sys=[F,K_m, R_p, L_d, Q_f];
sys(1)=F;
sys(2)=K_m;
sys(3)=R_p;
sys(4)=L_c;
sys(5)=Q_f;

请求高手帮助,为什么会出现这样Input argument "flag" is undefined.的报错,我都是按照书上写的这个是用于simulink的 s函数,还需要定义吗?我看了好多例子都没定义,要怎样定义?
错误原文是:
??? Input argument "flag" is undefined.

Error in ==> rollforce at 31
switch flag,

[sys,x0,str,ts]=rollforce(t,x,u,flag,v,E,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,C,chem,m),
t,x,u,flag,v,E,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,C,chem,m这些数都是要你输入的,你肯定没输入flag的数据吧,这是函数文件,要有输入输出的,sys,x0,str,ts是反馈回来的输出追问

嗯,这些都是的,那请问一下应该怎样定义flag呢?还有t,x,u,还要定义吗?就是前四个怎样定义?

温馨提示:答案为网友推荐,仅供参考
相似回答