2014-04-16 172 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 
相關問題