MATLAB工作区变量在GUI函数中的显示

3

我在MATLAB工作空间中有一个变量,我想将这个变量传递给我的GUI中的一个函数。

我该如何完成这个任务?

2个回答

5

您可以在GUI中使用函数EVALIN从基础工作区获取变量的值。以下示例提取基础工作区中变量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

使用基础工作区作为“变量容器”,一种“全局”变量存储方式,可能很诱人。但是这会消除变量作用域的所有优势!每段代码都可能更改基础工作区中的变量。这种编程风格使得错误跟踪变得非常困难。 - zellus
@zellus:我同意在GUI中处理变量有更好的方法,比如使用嵌套回调函数来维护局部变量的值。然而,OP特别要求如何将工作区变量传递到GUI中,这是其中一种方法。 - gnovice
你说得对,我的评论应该属于问题而不是你的回答。 - zellus

1

你可以在主工作区使用 SETAPPDATA 和在 GUI 中使用 GETAPPDATA 函数。

如果你的变量是 someMatrix

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接