请问simulink中出现这个错误怎么解决?求指教。
Error in 'CSTR_ISMCO/S-Function' while executing MATLAB S-function 'CSTR_sFun', flag = 1 (derivatives), at time 0.0.
试图访问 u(2);由于 numel(u)=1,索引超出范围。
Component: Simulink | Category: Block error
该模块原程序如下
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 4;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 3;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [0.5 3 0 0];
str = [];
ts = [0 0];
function sys=mdlDerivatives(t,x,u)
u=u(1);
filter=u(2);
%***********CSTR parameters**************
alfa=1.0;
beta=0.3;
gamma=20;
b=-8.0;
Da=0.072;
alfa1=0.5;
alfa2=0.5;
%system states
x1=x(1);
x2=x(2);
xx1=x(3);
xx2=x(4);
y=x2;
%************* dynamic equation **********************
dx1=-alfa*x(1)+Da*(1-x(1))*exp(gamma*x(2)/(gamma+x(2)));
dx2=-alfa*x(2)-b*Da*(1-x(1))*exp(gamma*x(2)/(gamma+x(2)))+beta*u-beta*x(2);
sys(1)= dx1;
sys(2)= dx2;
%********** observer **********
xxx1=xx1-alfa2*filter/(-b*Da*exp(gamma*xx2/(gamma+xx2)));
dxx1=-alfa*xx1+Da*(1-xx1)*exp(gamma*xx2/(gamma+xx2))+alfa1*sign(xxx1-xx1);
dxx2=-alfa*xx2-b*Da*(1-xx1)*exp(gamma*xx2/(gamma+xx2))+beta*u-beta*xx2+alfa2*sign(y-xx2);
sys(3)=dxx1;
sys(4)=dxx2;
function sys=mdlOutputs(t,x,u)
y=x(2);
f=sign(y-x(4));
sys(1)=x(3);
sys(2)=x(4);
sys(3)=f;
最后
以上就是时尚芹菜最近收集整理的关于matlab仿真中的Pluse什么,请问simulink中出现这个错误如何解决?求指教。的全部内容,更多相关matlab仿真中内容请搜索靠谱客的其他文章。
发表评论 取消回复