Matlab功能类似于python' s __name __ ==' __ main __'

时间:2014-04-16 09:57:53

标签: matlab main

我正在寻找Matlab功能来区分何时直接运行脚本或从另一个脚本运行脚本。

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

在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)

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

3 个答案:

答案 0 :(得分:3)

您可以使用'dbstack' [1]查看函数调用。

答案 1 :(得分:2)

我不知道这是否可以在MATLAB中实现。解决方法是将ifexist一起使用,如下所示:

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

答案 2 :(得分:2)

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

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

    % Code
    ...

    % Debug
    if (~doDebugPlot), return; end

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