MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]s函数出错! (https://www.labfans.com/bbs/showthread.php?t=6044)

alex_magicsky 2008-12-26 19:02

[求助]s函数出错!
 
错误: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函数出错!
 
此程序:
%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;


所有时间均为北京时间。现在的时间是 12:16

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.