2014-04-08 112 views
0

我想使用在Matlab函數中加載到我的工作區中的數據。這是我的功能的開始。在Matlab函數中使用工作區變量

function [totalProfit] = compute(p,exit) 

%% Declaration of variables 

entry=0; 
T = length(data); 
. 
. 
. 
end 

我得到一個錯誤:

Undefined function or variable 'data'.

哪裏錯誤?

回答

2

變量數據可能是在函數之外定義的,所以它超出了範圍。

通過data作爲compute的參數,然後它將在函數內部可用。

0

Ran是正確的,但我想提一些別的。通常,只有作爲參數傳遞給函數的變量才能在該函數中使用,因此如果要在函數內使用現有變量,請將它們作爲輸入參數傳遞。

可以創建全局變量,允許您在函數內部使用它們而不用將它們作爲參數傳遞,但它通常不是編寫代碼的最佳方式。我使用全局變量的時間是我從一個腳本調用多個函數的地方,我有一些常量將被所有函數使用(例如重力是常見的)。全局變量的一個替代方法是使用一個結構體,以及要傳遞給其中的函數的變量,因此您只需要一個額外的輸入參數,但仍需要小心。

2

您可以使用evalin來處理來自其他工作空間的變量。在您的例子,這可能是

T = evalin('caller','length(data)') 

但請注意,在大多數情況下,你會得到更乾淨的代碼,如果你定義變量作爲function輸入參數。所以對於你的情況,這將是

function [totalProfit] = compute(p,exit,data)  
    T = length(data) ; 
end 
相關問題