給定一個簡單函數函數調用後,如何使MATLAB變量,總線等持久化?
function Test()
global foo;
foo = 4;
end
在執行可變「富」被寫入到基部的工作區。當函數結束時,foo將從工作區中移除。有沒有辦法,最好是不寫一個* .mat文件並將該文件重新加載到工作區,以便在函數終止後讓變量持續存在?
給定一個簡單函數函數調用後,如何使MATLAB變量,總線等持久化?
function Test()
global foo;
foo = 4;
end
在執行可變「富」被寫入到基部的工作區。當函數結束時,foo將從工作區中移除。有沒有辦法,最好是不寫一個* .mat文件並將該文件重新加載到工作區,以便在函數終止後讓變量持續存在?
全局變量不是一個好主意。它使您的代碼難以維護和調試。而是返回varible:
function foo = Test()
foo = 4;
end
,現在在你的主腳本調用foo = Test();
,這將有效地持續下去。
如果你真的真的想使用全局變量(但你真的真的不應該)然後
function Test()
global foo;
foo = 4;
end
,並在主腳本只是先聲明foo
全球
global foo
Test()
儘管我很欣賞快速準確的響應,但Stack Overflow是關於問題和答案的,而不是意見。最好留下意見作爲腳註,也許是網上某處終極書面意見的鏈接。我完全同意你的意見。然而,在我所採用的系統中,情況就是如此,並且改變將是一次大規模的重新架構工作,這就是爲什麼在這種情況下這個意見並不重要。 –
@JCollins這不是一個意見,它是一個答案。你如何得到一個變量來堅持是返回它的答案。我已經提供了使用全局變量的語法,如果您不想重構遺留代碼的不幸情況,也必須這樣做。但是,即使這是一種意見,它也是非常有價值的,因爲很多人將來都會閱讀這篇文章,而且他們可能會從看到更強大的方法中受益,因爲對於大多數人來說,改變並不晚。 – Dan
授予它並且我欣賞答案組件足以接受它。當論壇上的人們拒絕回答問題而不喜歡他們的肥皂盒時,只是我的寵物。我只是在評論你的第一行,其餘的正是我需要的感謝。 –
你也應該在你的工作區中使'foo'全局化。 – abcd
只是返回該值,如果你不想處理全局事情 – MZimmerman6
[在MATLAB中聲明一個全局變量]可能的重複(http://stackoverflow.com/questions/4911926/declaring-a-global-variable -in-matlab) – Dan