2011-05-11 129 views
3

爲了描述清楚我的意思, 我只是在這裏給出一個例子:如何在.m文件中使用參數作爲全局變量?

function y = f(x,a) 
global a 
y = f1(x); 

function y = f1(x) 
global a 
y = x + a; 

在這裏,我想「一」被用來作爲一個全局變量,可以通過子功能「F1」被稱爲變量計算$ x + a $。 (我的目的是減少參數的變換)

但是這個函數不起作用,除非我定義一個新變量'b'來恢復'a'的值。

現在的問題是,如何在不定義新變量的情況下直接創建'a'全局變量?

回答

3

我不會推薦你使用全局變量,特別是因爲你傳遞了一個函數f

可以在沒有全局變量來獲得你想要的行爲,但是使用nested functions

function y = f(x,a) 
y = f1(x); 
    function y = f1(x) 
    y = x + a; 
    end 
end 
0

您可以嘗試

a=evalin('base','a'); 

從基工作區獲得的a值。通常不鼓勵全局變量。

+0

在所有應有的尊重,這是比全球變數更糟糕。只有當沒有其他選項可行時才應使用「eval」,「evalin」和「assignin」。你的解決方案可以工作,但代碼將難以維護。 – Egon 2011-05-11 21:18:01

+0

是的,我原則上同意。在某種程度上,OP需要將'a'的值傳遞給函數。我的意願是明確地通過它。 – mor22 2011-05-12 11:45:24

相關問題