求助 s函数出错
单神经元自适应pid控制。function=mhebb(t,x,u,flag,K,ni,np,nd)
switch flag,
case 0,
=mdlInitializeSizes;
case 2,
sys=mdlUpdate(t,x,u,ni,np,nd);
case 3,
sys=mdlOutputs(t,x,u,K);
case {1,4,9},
sys=[];
otherwise
error(['Unhandled flag=',num2str(flag)]);
end
function=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates =0;
sizes.NumDiscStates =3;
sizes.NumOutputs =1;
sizes.NumInputs =4;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=';
str=[];
ts=[-1 0];
function sys=mdlUpdate(t,x,u,ni,np,nd)
sys(1)=x(1)+ni.*u(1).*u(4).*u(1);
sys(2)=x(2)+np.*u(1).*u(4)+(u(1)-u(2));
sys(3)=x(3)+nd.*u(1).*u(4).*(u(1)-2.*u(2)+u(3));
function sys=mdlOutputs(t,x,u,K)
xx=;
%yy=abs(x(1))+abs(x(2))+abs(x(3));
sys=u(4)+K.*((x./sum(abs(x))).*xx);
最后一行有问题:
Error in 'untitled/Subsystem/S-Function' while executing M-File S-function 'mhebb', flag = 3 (output), at time 0. MATLAB error message:
Matrix dimensions must agree.
不是说了么,矩阵维数不对 flag=3时
sys=u(4)+K.*((x./sum(abs(x))).*xx);
sys应该为元素数为3的相量,可能K的赋值有问题。
页:
[1]