alex_magicsky
2008-12-26, 19:02
错误:Output returned by S-function 'feedback' in 'feedback_s/S-Function1' during flag=3 call must be a real vector of length 2.新手学习ing,此问题费解望高手不吝赐教!感谢!
alex_magicsky
2008-12-26, 19:03
此程序:
%S-function for continuous state equation
function [sys,x0,str,ts]=feedback(t,x,u,flag)
switch flag,
%Initialization
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 = 6;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys=simsizes(sizes);
x0=[0,0,0,0,0,0];
str=[];
ts=[];
function sys=mdlDerivatives(t,x,u)
%Friction
Fc=0.28*1000;
Fs=0.34*1000;
vs=0.01;
af=0.02;
rou0=260;
rou1=2.5;
g=Fc+(Fs-Fc)*exp(-(x(2)/vs)^2)+af*x(2);
sys(6)=x(2)-(rou0*abs(x(2))/g)*x(6);
dt=rou0*x(6)+rou1*sys(6)+af*x(2);
sys(1)=x(2);
sys(2)=x(3);
sys(3)=x(4);
sys(4)=x(5);
sys(5)=-0.0001e7*x(5)-0.0421e7*x(4)-1.3773e7*x(3)-2.9824e7*x(2)-5.9648e7*x(1)+u-dt;
function sys=mdlOutputs(t,x,u)
%Friction
Fc=0.28*1000;
Fs=0.34*1000;
vs=0.01;
af=0.02;
rou0=260;
rou1=2.5;
g=Fc+(Fs-Fc)*exp(-(x(2)/vs)^2)+af*x(2);
sys(6)=x(2)-(rou0*abs(x(2))/g)*x(6);
dt=rou0*x(6)+rou1*sys(6)+af*x(2);
sys(1)=-89.1739*x(4)-7.1578e4*x(3)-3.5786e7*x(2)+5.9648e7*x(1);
sys(2)=dt;
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.