求解决S-Function运行提示error:flag=3 at time 0.0 输入参数不足,附代码

function [sys,x0,str,ts] = control(t,x,u,flag,par)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u,par);
case {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 = 1;
sizes.NumInputs = 6;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0,0];

function sys=mdlOutputs(t,x,u,par)
x(1) = u(1);
x(2) = u(2);
x(3) = u(3);
fkp = u(4);
fki = u(5);
fkd = u(6);

kp = par(1);
ki = par(2);
kd = par(3);
k = par(4);
fkp1 = par(5);
fki1 = par(6);
fkd1 = par(7);

delta_fkp = fkp*fkp1;
delta_fki = 0;
delta_fkd = fkd*fkd1;

M = par(8);
if M==1 %%x(1) <-100

ut =k*( kp*x(1)+ki*x(2)+kd*x(3)); %%PID

else
ut =k*( (kp+delta_fkp)*x(1)+(ki+delta_fki)*x(2)+(kd+delta_fkd)*x(3));
%%fuzzyPID
delta_fki = fki*fki1;
A=(kp+delta_fkp);
B=(ki+delta_fki);
C=(kd+delta_fkd);
x(1),A,B,C
end
if ut>=6000
ut=6000;
end
sys=ut;

楼主解决了吗?能告诉我是为什么吗?

求问解决了吗

我也想知道怎么解决的······

解决了么,我也遇到了