应该是很简单的问题,求助大家的帮助,在线等(急)
在simulink里写的s function 运行程序的时候总是出现Input argument 'flag' is undefined.的错误,用matlab自带的demo也是一样,哪位知道的麻烦告诉一下是什么原因,不胜感激! 看到的帮个忙啊,实在是急啊 怎么没人理啊把程序贴上来,希望有人能找出问题
[ 本帖最后由 franny4611 于 2007-5-12 15:47 编辑 ]
把程序贴上来,希望有人能找出问题
function =area_sel(t,x,u,flag)switch flag,
case 0,
= mdlInitializeSizes;
case 2,
sys=[];
case 3,
sys=mdlOutputs(t,x,u);
case 4,
sys=[];
case 9,
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 2;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= [];
function sys=mdIOutputs(t,x,u)
if(u(1)>0)
if(u(2)/u(1)<1/sqrt(3)&&u(2)/u(1)>-1/sqrt(3))
sys=1;
end
if(u(2)/u(1)>1/sqrt(3))
sys=2;
end
if(u(2)/u(1)<-1/sqrt(3))
sys=6;
end
end
if(u(1)<0)
if(u(2)/u(1)<-1/sqrt(3))
sys=3;
end
if(u(2)/u(1)<1/sqrt(3)&&u(2)/u(1)>-1/sqrt(3))
sys=4;
end
if(u(2)/u(1)>1/sqrt(3))
sys=5;
end
end
if(u(1)==0)
if(u(2)>0)
sys=3;
else
sys=6;
end
end
回复 #5 franny4611 的帖子
你是直接运行这个程序吗?要是那样的话一般都会提示这个错误 原帖由 franny4611 于 2007-5-12 15:46 发表 http://forum.vibunion.com/forum/images/common/back.giffunction =area_sel(t,x,u,flag)
switch flag,
case 0,
= mdlInitializeSizes;
case 2,
sys=[];
case 3,
sys=mdlOutpu ...
你这个是S函数的格式,如果直接当成普通M文件运行,永远报这个错的
你要把它用在系统中就不是错误了。
flag的0,1,3等值的不同代表了不同的情况
看下帮助里面的simulink里面的writing S-functions 里面的相关介绍你就明白了哈:)
页:
[1]