| 查看: 5269 | 回复: 0 | |||
mln5431铜虫 (初入文坛)
|
[求助]
请问simulink中出现这个错误如何解决?求指教。
|
|
请问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; |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有8人回复
为什么nbs上溴 没有产物点出现呢
已经有6人回复
求推荐博导
已经有4人回复
存款400万可以在学校里躺平吗
已经有34人回复
求助一下有机合成大神
已经有4人回复
最失望的一年
已经有16人回复
求推荐英文EI期刊
已经有5人回复
26申博
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
疑惑?
已经有5人回复














回复此楼