einstein_son 发表于 2011-5-28 23:41:17

求助 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.

kokyo52 发表于 2011-5-29 10:53:31

不是说了么,矩阵维数不对

lin2009 发表于 2011-5-29 11:07:58

flag=3时
sys=u(4)+K.*((x./sum(abs(x))).*xx);

sys应该为元素数为3的相量,可能K的赋值有问题。
页: [1]
查看完整版本: 求助 s函数出错