2013-10-08 18 views
0

給定一個簡單函數函數調用後,如何使MATLAB變量,總線等持久化?

function Test() 

    global foo; 
    foo = 4; 

end 

在執行可變「富」被寫入到基部的工作區。當函數結束時,foo將從工作區中移除。有沒有辦法,最好是不寫一個* .mat文件並將該文件重新加載到工作區,以便在函數終止後讓變量持續存在?

+1

你也應該在你的工作區中使'foo'全局化。 – abcd

+1

只是返回該值,如果你不想處理全局事情 – MZimmerman6

+0

[在MATLAB中聲明一個全局變量]可能的重複(http://stackoverflow.com/questions/4911926/declaring-a-global-variable -in-matlab) – Dan

回答

0

全局變量不是一個好主意。它使您的代碼難以維護和調試。而是返回varible:

function foo = Test() 
    foo = 4; 
end 

,現在在你的主腳本調用foo = Test();,這將有效地持續下去。

如果你真的真的想使用全局變量(但你真的真的不應該)然後

function Test() 
    global foo; 
    foo = 4; 
end 

,並在主腳本只是先聲明foo全球

global foo 
Test() 
+0

儘管我很欣賞快速準確的響應,但Stack Overflow是關於問題和答案的,而不是意見。最好留下意見作爲腳註,也許是網上某處終極書面意見的鏈接。我完全同意你的意見。然而,在我所採用的系統中,情況就是如此,並且改變將是一次大規模的重新架構工作,這就是爲什麼在這種情況下這個意見並不重要。 –

+0

@JCollins這不是一個意見,它是一個答案。你如何得到一個變量來堅持是返回它的答案。我已經提供了使用全局變量的語法,如果您不想重構遺留代碼的不幸情況,也必須這樣做。但是,即使這是一種意見,它也是非常有價值的,因爲很多人將來都會閱讀這篇文章,而且他們可能會從看到更強大的方法中受益,因爲對於大多數人來說,改變並不晚。 – Dan

+0

授予它並且我欣賞答案組件足以接受它。當論壇上的人們拒絕回答問題而不喜歡他們的肥皂盒時,只是我的寵物。我只是在評論你的第一行,其餘的正是我需要的感謝。 –