2014-04-16 130 views
1

我正在寻找Matlab的功能来区分何时脚本直接运行或从另一个脚本运行。Matlab功能类似于python的__name __ =='__ main__'

我构建了一个脚本,用于声明要处理的数据,并将其用于其他脚本和函数。当我直接运行这个脚本时,我想绘制这些数据。当我从另一个脚本中调用这个脚本时,我不想拥有所有这些情节。

在python中,我可以构建一个绘图函数,并只有在__name__=='__main__'我无法找到如何在Matlab中执行时调用此函数。

作为例子:

data.m

a = [1 2 3 4 5] 
b = sin(a) 
% plot only if run directly 
figure 
plot(a,b) 

analysis.m

data 
c = a.^2 
figure 
plot(c) 

当我运行analysis.m我想只有plot(c)而不是任何其他。

回答

1

为补充@tashuhka答案(即使用dbstack),并根据您是否想将变量保留在全局范围内,另一个解决方案是将您的脚本转换为函数并将可选参数传递给'analysis.m'。

function [] = foo(doDebugPlot) 
%[ 
    % Check params 
    if (nargin < 1), doDebugPlot = true; end 

    % Code 
    ... 

    % Debug 
    if (~doDebugPlot), return; end 

    plot(lala); 
    plot(tutut); 
%] 
1

我不知道这是否可能在MATLAB中。一种解决方法是与exist一起使用if,像这样:

analysis.m

run_data = 1; 
data 
c = a.^2 
figure 
plot(c) 

data.m

a = [1 2 3 4 5] 
b = sin(a) 
% plot only if run directly 
if ~exist('run_data','var') 
    figure 
    plot(a,b) 
end 
相关问题