当从另一个函数中调用该函数时,如何抑制该函数中的代码行?
How do I suppress lines of code inside one function when that function is being called from within another function?
我有两个函数,一个是从另一个函数内部调用的。我希望第一个函数的某些部分在第二个函数中被调用时不执行。
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)))]);
当我从命令 window[=12= 调用第二个函数时,我想禁止显示最后一行 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(...) 语句,而不是其他任何语句。
在第一个函数中,可以放一段代码在
if numel(dbstack) == 1
% Your code block
end
防止它们被执行,除非直接从命令 Window 调用函数。
另一种方法是检查是否存在一些变量,例如 debug_1
、debug_2
等。您可以在调用第一个函数时从第二个函数传递这些变量。
我有两个函数,一个是从另一个函数内部调用的。我希望第一个函数的某些部分在第二个函数中被调用时不执行。
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)))]);
当我从命令 window[=12= 调用第二个函数时,我想禁止显示最后一行 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(...) 语句,而不是其他任何语句。
在第一个函数中,可以放一段代码在
if numel(dbstack) == 1
% Your code block
end
防止它们被执行,除非直接从命令 Window 调用函数。
另一种方法是检查是否存在一些变量,例如 debug_1
、debug_2
等。您可以在调用第一个函数时从第二个函数传递这些变量。