编写matlab s函数,运行时老是出现“??? Input argument "flag" is undefined.”这样的错误,为何?

编写s函数出现flag是undefined的报错我的代码是:function[sys,x0,str,ts]=c8mhebb(t,x,u,flag,deltak)switc... 编写s函数出现flag是undefined的报错
我的代码是:
function[sys,x0,str,ts]=c8mhebb(t,x,u,flag,deltak)
switch flag,
case 0,[sys,x0,str,ts]=mdlinitializesizes;
case 2,sys=mdlupdate(t,x,u,deltak);
case 3,sys=mdloutput(t,x,u);
case{ 1,4,9} ,sys=[];
otherwise,error(['unhandled flag',num2str(flag)]);
end
%模块初始化函数 mdlinitializesizes
function[sys,x0,str,ts] =mdlinitializesizes
sizes = simsizes % 读入系统变量的默认值
sizes.numcontstates=0;
sizes.numdiscstates=3;
sizes.numoutputs=4;
sizes.numinputs=4;
sizes.dirfeedthrough=1;
sizes.numsampletimes=1;
sys=simsizes(sizes);
x0=[0.3*rand(3,1)];
str=[];
ts=[-1 0];
%离散状态更新函数
function sys =mdlupdate(t,x,u,deltak)
sys= x+deltak*u(1)*u(4)*(2*u(1)-u(2));
%输出量计算函数
function sys=mdloutputs(t,x,u)
xx=[u(1)-u(2) u(1) u(1)+u(3)-2*u(2)];
sys=[u(2)+0.12*xx*x/sum(abs(x)); x/sum(abs(x))]
请求高手帮助,为什么会出现这样Input argument "flag" is undefined.的报错,我都是按照书上写的
这个是用于simulink的 s函数,还需要定义吗?我看了好多例子都没定义
展开
 我来答
ironbridge0746
2010-08-13
知道答主
回答量:15
采纳率:0%
帮助的人:17.3万
展开全部
function[sys,x0,str,ts]=c8mhebb(t,x,u,flag,deltak)这个相当于函数定义,你需要写个代码调用它,把t,x,u,flag,deltak 这几个定义了,不然肯定会出现
Input argument "flag" is undefined (输入变量"flag"没有定义)这个错误。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daweibahou1988
2012-12-29
知道答主
回答量:1
采纳率:0%
帮助的人:1549
展开全部
S函数的m文件是运行S函数时自动调用的,不能自己独立运行,在simulink里直接仿真就好了。PS: 好多人同问,但没有看到靠谱的解答,自己瞎弄半天才搞定……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式