当从另一个函数中调用该函数时,如何抑制一个函数内的代码行?

时间:2015-02-10 15:31:48

标签: matlab function suppress disp

我有两个功能,一个是从另一个内部调用的。我希望在第二个函数中调用第一个函数的某些部分时不执行。

function vvec = vecVelocity(varargin);
%must be preceded with a 'syms var real' declaration where var is
%the parameter of your vector function

if nargin > 1 & nargin < 3
   r = [sym(varargin(1:end))];
elseif nargin > 3 
    disp('too many inputs')
    return
else r = [sym(varargin(1))];
end

if length(r) < 3
    r = [r,0];
end

dr = diff(r);
uT = vecUnitTan(r);
speed = sqrt(sum(dr.^2));
v = speed*uT;
vvec = matlabFunction(v);
disp(['Simplified Symbolic Form: ' char(simplify(sym(vvec)))]);

当我从命令窗口调用以下第二个函数时,我想禁止显示最后一行 disp(...)

function speed = vecSpeed(r);
%must be preceded with a 'syms var real' declaration where var is
%the parameter of your vector function

v = sym(vecVelocity(r));
sp = sqrt(sum(v.^2));
speed = matlabFunction(sp);
disp(['Simplified Symbolic Form: ' char(simplify(sym(speed)))]);

此时,调用vecSpeed函数会导致从vecSpeed函数中调用的其他前面函数(以及从vecVelocity函数中调用的一些函数)中显示一堆语句,但我只想要来自要调用的vecSpeed函数的 disp(...)语句,而不是其他任何语句。

1 个答案:

答案 0 :(得分:4)

在第一个函数中,您可以在

中放入一段代码
if numel(dbstack) == 1
  % Your code block
end
除非直接从命令窗口调用该函数,否则

阻止执行它们。

另一种方法是检查是否存在某些变量,例如debug_1debug_2等等。当你调用第一个函数时,你可以从第二个函数传递它。