2015-02-10 82 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

相關問題