希望路过的大神看到后,能帮忙解决一下!这是controller模块的代码:function [sys,x0,str,ts,simStateCompliance] = Controller(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case 3
sys=mdlOutputs(t,x,u);
case {1, 2, 4, 9 }
sys=[];
otherwise
('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
= 0;
= 0;
= 1;
= 2;
= 1;
= 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
simStateCompliance = 'UnknownSimState';
% end mdlInitializeSizesm
function sys=mdlOutputs(t,x,u)
x1 = u(1);
y = u(2);
a = 1;
b = 1;
k = 1;
k2 = 1;
yd = (a*x1^2+k*x1)/(x1^2+1);
ey = yd-y;
d1_yd =( (2*a*x1+k)*(x1^2+1)-2*x1*(a*x1^2+k*x1))/(x1^2+1)^2;
ut = (d1_yd-sin(x1)+k2*ey+x1(x1^2+1))/b;
sys = ut;
这是dynamic模块的代码:
function [sys,x0,str,ts,simStateCompliance] = Dynamic(t,x,u,flag)
switch flag
case 0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {1, 2, 4, 9 }
sys=[];
otherwise
('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
= 0;
= 0;
= 2;
= 3;
= 1;
= 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [-1 0];
simStateCompliance = 'UnknownSimState';
% end mdlInitializeSizes
function sys=mdlOutputs(t,x,u)
x1 = u(1);
y = u(2);
ut = u(3);
a = 1;
b = 1;
d1_x1 = a*x1^2-(x1^2+1)*y;
d1_y = b*ut+sin(x1);
sys = [d1_x1;d1_y];