2010-09-01 1568 views

回答

1

您可以使用SETAPPDATA(在主工作區中)和GETAPPDATA(在GUI中)功能。

如果變量是someMatrix

setappdata(0,'someMatrix',someMatrix) % in the main workspace 

someMatrix = getappdata(0,'someMatrix') % in GUI 
5

您可以使用該功能EVALIN在你的GUI來從基工作區變量的值。下面的例子中提取變量A的基礎工作空間和場所,在局部變量B價值論:

B = evalin('base','A'); 

你可以,例如,在你的GUI可編輯的文本框,允許用戶輸入要從基本工作區導入的變量的名稱。那麼您的其中一個GUI功能,可以讀取可編輯文本框中的字符串,並試圖從基工作區獲取該變量在某些計算使用:

varName = get(hEditText,'String'); %# Get the string value from the uicontrol 
             %# object with handle hEditText 
try         %# Make an attempt to... 
    varValue = evalin('base',varName); %# get the value from the base workspace 
catch exception      %# Catch the exception if the above fails 
    error(['Variable ''' varName ... %# Throw an error 
     ''' doesn''t exist in workspace.']); 
end 
+0

使用基工作區爲「變量容器」,一種'全球'變量存儲,可以是誘人的。但是消除了變量範圍的所有優點!每段代碼都可能會改變基本工作區中的變量。這種編程風格使錯誤難以追蹤。 – zellus 2010-09-01 22:44:14

+0

@zellus:我同意有更好的方法來處理GUI中的變量,比如使用嵌套的回調函數來維護局部變量的值。但是,OP特別要求如何將工作區變量放入GUI中,這是其中一種方式。 – gnovice 2010-09-02 02:53:44

+0

您的權利,我的評論屬於這個問題,而不是您的答案。 – zellus 2010-09-02 10:42:09