matlab程序崩溃怎么解决,跪求matlab达人帮我看看程序,我实在是要崩溃了......
程序報錯:Output returned by S-function 'controller' in
'untitled/S-Function' during flag=3 call must be a real vector of
length 1.
程序如下:
function[sys,x0,str,ts]=controller(t,x,u,flag)
switch flag,
case
0,
[sys,x0,str,ts]=mdlInitializeSizes;
case
1,
sys=mdlDerivatives(t,x,u);
% outputs
case
3,
sys=mdlOutputs(t,x,u);
%unhandled flags
case{2,4,9}
sys=[];
%unexpected flags
otherwise
error(['Unhandled flag =',num2str(flag)]);
end
%mdlinitializesizes
function[sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 3;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 3;
size.DirFeedthrough = 0;
size.NumsampleTimes = 0;
sys=simsizes(sizes);
x0=[0 0 0 ];
str=[];
ts=[];
function sys=mdlDerivatives(t,x,u)
k1 = 50;
r1 = 200;
r2 = 200;
r3 = 200;
x1d=u(1);
dx1d=2*pi*cos(2*pi*t);
ddx1d=-(2*pi)^2*sin(2*pi*t);
x1=u(2);
z1=x1-x1d;
x2=u(3);
x2d=-k1*z1+dx1d;
z2=x2-x2d;
sys(1)=r1*((1/2)*sec(x1)*tan(x1)*(z2)^2*x2+(z2)*sec(x1)*(k1*(x2-dx1d)-ddx1d));
sys(2)=r2*z2*tan(x1);
sys(3)=r3*((1/2)*sin(x1)*(z2)^2*x2-z2*(x2)^2*sin(x1)-z2*cos(x1)*(k1*(x2-dx1d)-ddx1d));
function sys=mdlOutputs(t,x,u)
k1 = 50;
k2=50;
x1d=u(1);
dx1d=2*pi*cos(2*pi*t);
ddx1d=-(2*pi)^2*sin(2*pi*t);
x1=u(2);
z1=x1-x1d;
x2=u(3);
x2d=-k1*z1+dx1d;
z2=x2-x2d;
ut=-z1-k2*z2-x(1)*((1/2)*sec(x1)*tan(x1)*z2*x2+sec(x1)*(k1*(x2-dx1d)-ddx1d))-x(2)*tan(x1)-x(3)*((1/2)*sin(x1)*z2*x2-(x2)^2*sin(x1)-cos(x1)*(k1*(x2-dx1d)-ddx1d));
sys(1)=ut;
總結
以上是生活随笔為你收集整理的matlab程序崩溃怎么解决,跪求matlab达人帮我看看程序,我实在是要崩溃了......的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中句点,matlab入门学习
- 下一篇: php本身免费是啥意思,PHP本身是否支