2010-09-01 1565 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