24小时热门版块排行榜    

查看: 3102  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

mln5431

铜虫 (初入文坛)

[求助] 请问simulink中出现这个错误如何解决?求指教。 已有2人参与

请问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;
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

All is well!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iceson123

银虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
cenwanglai: 金币+3, 谢谢回复 2016-05-26 18:24:47
引用回帖:
3楼: Originally posted by mln5431 at 2016-05-17 10:28:08
不是的,其实是u=u(1)这句语法错误。...

u=u(1)把变量u覆盖掉了,改名字即可
4楼2016-05-17 14:55:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

xlzhao

铁虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
要求输入两个参数,形式上你只输入了1个,前面加上mux模块输入2个参数即可
ASR
2楼2016-05-17 07:22:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mln5431

铜虫 (初入文坛)

引用回帖:
2楼: Originally posted by xlzhao at 2016-05-17 07:22:10
要求输入两个参数,形式上你只输入了1个,前面加上mux模块输入2个参数即可

不是的,其实是u=u(1)这句语法错误。
All is well!
3楼2016-05-17 10:28:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见