2013-09-05 42 views
5

在工作區中,我製作一個矩陣。現在使工作區中的matlab變量爲全局

enter image description here

我可以在腳本中訪問變量。喜歡做的變量(2)將返回4.

但是這裏面像

function y= getvariable(x) 

y=Variable(x) 
end 

我得到錯誤

y=getvariable(2) 
    ??? Undefined function or method 'Variable' for input 
    arguments of type 'double'. 

    Error in ==> getvariable at 3 
    y=Variable(x) 

了一項功能,如何使Variable矩陣全球,這樣我可以訪問它通過任何功能?

回答

6

雖然你可以使用全局

>> global Variable = rand(50,12); 

...

function y = getvariable(x) 

    % Always needed 
    global Variable; 

    % Here ya go 
    y = Variable; 

end 

MUCH更好的替代方法是使用

function x = getvariable(x) 
    % no body needed  
end 

您撥打的

>> y = getvariable(Variable); 

(當然,對於這個人爲的例子,這也只是等於

>> y = Variable; 

雖然有一些合法的用例的全局變量,一般而言,他們傾向於對代碼進行spaghettify,並使其更容易出錯並且更難以調試。 Have a read關於這個問題。

+1

我有一個包含大約500個不同值的變量的Excel工作表。所以我做了一個矩陣變量。然後我在一個函數中使用它。而且我不認爲我可以在函數內輸入這個excel值。是否有避免在這裏使用全局的方法_ – Moz

+3

@Moz:...只是將該矩陣變量作爲參數傳遞給函數? –

+3

爲什麼不使用函數來讀取你的excel文件('xlsread'或類似的)並從那裏開始? – Nick

3
  1. 通話global Variable您在您的工作空間
  2. 呼叫global Variable定義它,你在你的函數中使用它之前之前

不過我建議你另想辦法將變量傳遞給你的函數,如全局在調試時可能會造成困難。

+4

欲瞭解更多詳情,請參閱http://www.mathworks.co.uk/he lp/matlab/matlab_prog/share-data-between-workspaces.html – am304

5

由於@rody建議,通過矩陣與x的函數

裏面我只給一個例子,把事情說清楚。

像你想如果你想訪問的Variable第三元素訪問變量矩陣的10元,所以使功能

function y= getvariable(matrixname,no) 
y=matrixname(no) 
end 

,所以你鍵入

Y =的getVariable (變量,3)

您將獲得第3元素