samonyou 发表于 2008-6-9 09:58

S函数问题求助,“??? Input argument 'flag' is undefined.”

按照书上的一个S函数的例子写的,实现阶梯波的功能,可是一运行就会出错,请各位看看是什么问题?


function = jieti(t,x,u,flag,tTime,yStep)
% Dispatch the flag. The switch function controls the calls to
% S-function routines at each simulation stage.
switch flag,

   case 0
    = mdlInitializeSizes; % Initialization

   case 3
   sys = mdlOutputs(t,tTime,yStep); % Calculate outputs

   case { 1, 2, 4, 9 }
   sys = []; % Unused flags

   otherwise
   error(['Unhandled flag = ',num2str(flag)]); % Error handling
end;
% End of function timestwo.
%==============================================================
% Function mdlInitializeSizes initializes the states, sample
% times, state ordering strings (str), and sizes structure.
%==============================================================
function = mdlInitializeSizes
% Call function simsizes to create the sizes structure.
sizes = simsizes;
% Load the sizes structure with the initialization information.
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs=    1;
sizes.NumInputs=   0;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=1;
% Load the sys vector with the sizes information.
sys = simsizes (sizes);
%
x0 = []; % No continuous states
%
str = []; % No state ordering
%
ts = ; % Inherited sample time
% End of mdlInitializeSizes.
%==============================================================
% Function mdlOutputs performs the calculations.
%==============================================================
function sys = mdlOutputs(t,tTime,yStep)
i = find(tTime<=t);
sys =yStep(i(end));

% End of mdlOutputs.

sigma665 发表于 2008-6-9 10:04

function = jieti(t,x,u,flag,tTime,yStep)
调用的时候,有没有给它值啊

samonyou 发表于 2008-6-9 10:27

这个函数是没有输入的,只有一个输出,调用的时候不用给值吧.

anneyholly 发表于 2008-6-9 11:33

有输入参数的

jieti(t,x,u,flag,tTime,yStep)
函数里面的参数不都是输入参数吗?

samonyou 发表于 2008-6-9 14:54

jieti(t,x,u,flag,tTime,yStep)
中t,x,u分别是时间,状态,输入信号(这个例子里不需要输入),flag是标志位,都不用输入吧。在调用时s-function name 写“jieti”,s-function parameters里面还需要写什么参数吗?

sigma665 发表于 2008-6-9 16:57

搞不懂s函数

不过对于m函数文件
这种形式,肯定有输入
要不也不会提示你有参数没有定义了

wxl789 发表于 2008-6-9 21:39

不清楚你的系统到底是什么样子的,所以很难下结论你具体那个地方出错。

我用s函数也出现过这个错误,原因是我单独运行了这个s函数。
而实际上,s函数是在某个模块中(我的是simulink模块)被调用的,他的具体参数由在他之前的模块提供。flag不需要自己定义,系统会默认的。

所以建议你运行整个模块看看是否报错。
页: [1]
查看完整版本: S函数问题求助,“??? Input argument 'flag' is undefined.”