2015-02-10 81 views
1

我有两个功能,一个是从另一个里面调用的。我希望在第二个函数中调用第一个函数的某些部分时不执行。当从另一个函数内调用该函数时,如何抑制一个函数内的代码行?

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函数,而不是其他人。

回答

4

在第一个功能,你可以把代码块中

if numel(dbstack) == 1 
    % Your code block 
end 

,以防止它们被执行,除非功能是直接从命令窗口调用。

另一种方法是检查是否存在某些变量,如debug_1,debug_2等等。当您调用第1个函数时,您可以从第2个函数传递该变量。

+0

if语句有效。最简单的方法:+1。 – rayryeng 2015-02-10 15:47:39

相关问题