MATLAB程序输入参数的数目不足

PMSM的MPTC控制仿真代码,报错输入参数的数目不足该怎么解决可以使程序正常运行。
function [sys,x0,str,Ts] = ctrlmptc(t,x,u,flag)

switch flag,

case 0,
[sys,x0,str,Ts]=mdlInitializeSizes;

case 1,
% sys=mdlDerivatives(t,x,u);
sys=[];

case 2,
sys=mdlUpdate(t,x,u);

case 3,
sys=mdlOutputs(t,x,u);

case 4,
% sys=mdlGetTimeOfNextVarHit(t,x,u);
sys=[];

case 9,
% sys=mdlTerminate(t,x,u);
sys=[];

otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));

end

function [sys,x0,str,Ts]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates = 0;
sizes.NumDiscStates = 3;
sizes.NumOutputs = 3;
sizes.NumInputs = 8;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes);

x0 = [0;0;0];

str = [];

Ts=1e-6;

simStateCompliance = 'UnknownSimState';

function sys=mdlDerivatives(t,x,u)

sys = [];

function sys=mdlUpdate(t,x,u)

%% initial value setting
Ts=1e-6;
Ld=8.5e-3;
Lq=8.5e-3;
Rs=0.135;
D=[Rs/Ld -u(1);u(1) Rs/Lq];
E=[1/Ld 0;0 1/Lq];
Fi_r=[0.1194;0];
Fi_s=[u(2);u(3)];
Us=[u(4);u(5)];

% the first predictive for compensating control delay
Fis_N=(eye(2)-DTs)Fi_s+TsUs+(RsTs/Ld)Fi_r;
Is_N=E
(Fis_N-Fi_r);
Te_N=1.54(Fis_N(1,1)*Is_N(2,1)-Fis_N(2,1)*Is_N(1,1));%flux linkage multiplication cross current

% the second predictive for control output
% define voltage vector
u1=[0;0;0]; uabc1=u1540;
u2=[1;1;1]; uabc2=u2
540;
u3=[1;0;0]; uabc3=u3540;
u4=[1;1;0]; uabc4=u4
540;
u5=[0;1;1]; uabc5=u5540;
u6=[0;1;0]; uabc6=u6
540;
u7=[0;0;1]; uabc7=u7540;
u8=[1;0;1]; uabc8=u8
540;

% abctodq transform
T=2*[cos(u(6)) cos(u(6)-2pi/3) cos(u(6)+2pi/3);-sin(u(6)) -sin(u(6)-2pi/3) -sin(u(6)+2pi/3)]/3;
udq1=Tuabc1;
udq2=T
uabc2;
udq3=Tuabc3;
udq4=T
uabc4;
udq5=Tuabc5;
udq6=T
uabc6;
udq7=Tuabc7;
udq8=T
uabc8;

%vector1
Fis_NN1=(eye(2)-DTs)Fis_N+Tsudq1+(RsTs/Ld)Fi_r;
Is_NN1=E
(Fis_NN1-Fi_r);
Te_NN1=1.54(Fis_NN1(1,1)*Is_NN1(2,1)-Fis_NN1(2,1)*Is_NN1(1,1));%flux linkage multiplication cross current

%vector2
Fis_NN2=(eye(2)-DTs)Fis_N+Tsudq2+(RsTs/Ld)Fi_r;
Is_NN2=E
(Fis_NN2-Fi_r);
Te_NN2=1.54(Fis_NN2(1,1)*Is_NN2(2,1)-Fis_NN2(2,1)*Is_NN2(1,1));%flux linkage multiplication cross current

%vector3
Fis_NN3=(eye(2)-DTs)Fis_N+Tsudq3+(RsTs/Ld)Fi_r;
Is_NN3=E
(Fis_NN3-Fi_r);
Te_NN3=1.54(Fis_NN3(1,1)*Is_NN3(2,1)-Fis_NN3(2,1)*Is_NN3(1,1));%flux linkage multiplication cross current

%vector4
Fis_NN4=(eye(2)-DTs)Fis_N+Tsudq4+(RsTs/Ld)Fi_r;
Is_NN4=E
(Fis_NN4-Fi_r);
Te_NN4=1.54(Fis_NN4(1,1)*Is_NN4(2,1)-Fis_NN4(2,1)*Is_NN4(1,1));%flux linkage multiplication cross current

%vector5
Fis_NN5=(eye(2)-DTs)Fis_N+Tsudq5+(RsTs/Ld)Fi_r;
Is_NN5=E
(Fis_NN5-Fi_r);
Te_NN5=1.54(Fis_NN5(1,1)*Is_NN5(2,1)-Fis_NN5(2,1)*Is_NN5(1,1));%flux linkage multiplication cross current

%vector6
Fis_NN6=(eye(2)-DTs)Fis_N+Tsudq6+(RsTs/Ld)Fi_r;
Is_NN6=E
(Fis_NN6-Fi_r);
Te_NN6=1.54(Fis_NN6(1,1)*Is_NN6(2,1)-Fis_NN6(2,1)*Is_NN6(1,1));%flux linkage multiplication cross current

%vector7
Fis_NN7=(eye(2)-DTs)Fis_N+Tsudq7+(RsTs/Ld)Fi_r;
Is_NN7=E
(Fis_NN7-Fi_r);
Te_NN7=1.54(Fis_NN7(1,1)*Is_NN7(2,1)-Fis_NN7(2,1)*Is_NN7(1,1));%flux linkage multiplication cross current

%vector8
Fis_NN8=(eye(2)-DTs)Fis_N+Tsudq8+(RsTs/Ld)Fi_r;
Is_NN8=E
(Fis_NN8-Fi_r);
Te_NN8=1.54(Fis_NN8(1,1)*Is_NN8(2,1)-Fis_NN8(2,1)*Is_NN8(1,1));%flux linkage multiplication cross current

%calculate cost function
lamdaT=50;lamdaF=30;
%vector1
Fis_NN1_cf=sqrt(dot(Fis_NN1,Fis_NN1));
CF1=lamdaT*(u(7)-Te_NN1)^2+lamdaF*(u(8)-Fis_NN1_cf)^2;

%vector2
Fis_NN2_cf=sqrt(dot(Fis_NN2,Fis_NN2));
CF2=lamdaT*(u(7)-Te_NN2)^2+lamdaF*(u(8)-Fis_NN2_cf)^2;

%vector3
Fis_NN3_cf=sqrt(dot(Fis_NN3,Fis_NN3));
CF3=lamdaT*(u(7)-Te_NN3)^2+lamdaF*(u(8)-Fis_NN3_cf)^2;

%vector4
Fis_NN4_cf=sqrt(dot(Fis_NN4,Fis_NN4));
CF4=lamdaT*(u(7)-Te_NN4)^2+lamdaF*(u(8)-Fis_NN4_cf)^2;

%vector5
Fis_NN5_cf=sqrt(dot(Fis_NN5,Fis_NN5));
CF5=lamdaT*(u(7)-Te_NN5)^2+lamdaF*(u(8)-Fis_NN5_cf)^2;

%vector6
Fis_NN6_cf=sqrt(dot(Fis_NN6,Fis_NN6));
CF6=lamdaT*(u(7)-Te_NN6)^2+lamdaF*(u(8)-Fis_NN6_cf)^2;

%vector7
Fis_NN7_cf=sqrt(dot(Fis_NN7,Fis_NN7));
CF7=lamdaT*(u(7)-Te_NN7)^2+lamdaF*(u(8)-Fis_NN7_cf)^2;

%vector8
Fis_NN8_cf=sqrt(dot(Fis_NN8,Fis_NN8));
CF8=lamdaT*(u(7)-Te_NN8)^2+lamdaF*(u(8)-Fis_NN8_cf)^2;

CF = [CF1-8]; %程序是分别写的[CF1,至,CF8],因为网站的正文中不允许重复输入同样符合,故以此代替

[mincf,index]=min(CF);

switch index
case 1
a=0;b=0;c=0;
case 2
a=1;b=1;c=1;
case 3
a=1;b=0;c=0;
case 4
a=1;b=1;c=0;
case 5
a=0;b=1;c=1;
case 6
a=0;b=1;c=0;
case 7
a=0;b=0;c=1;
case 8
a=1;b=0;c=1;
end
x=[a;b;c];

sys = x;

function sys=mdlOutputs(t,x,u)

sys = x;%[];

function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1; % Example, set the next hit to be one second later.
sys = t + sampleTime;

function sys=mdlTerminate(t,x,u)

sys = [];

% end mdlTerminate