输入输出反馈线性控制的MATLAB仿真出错,怎么解决

2025-03-01 15:02:38
推荐回答(1个)
回答1:

function [sys,x0,str,ts]=obser(t,x,u,flag)
switch flag
case 0,
[sys,x0,str,ts] = mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys = mdlOutputs(t,x,u);
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 = 8;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [];
function sys = mdlOutputs(t,x,u)
x1d=u(1);
dx1d=cos(t);
ddx1d=-sin(t);
dddx1d=-cos(t);
e=u(2);
de=u(3);
dde=u(4);
x1=u(5);
x2=u(6);
x3=u(7);
x4=u(8);
f=8000+523400*x2-0.0198*x3+0.0198*x4;
g=(1.35*10^5)*((absx4)^(1/2))+(2.6*10^5)*((abs(x3-(8*10^6)))^(1/2));
k1=5;k2=5;k3=5;
v=dddx1d+k1*dde+k2*de+k3*e;
ut=(v-f)/g;
sys(1)=ut;