我是使用GUIDE并在Matlab中使用GUI的新手。
我在Matlab中运行一个脚本,该脚本将接受来自用户的初始输入,然后继续打开GUI(使用GUIDE创建),该GUI将接受来自用户的进一步输入。但是,我无法想出一种在脚本和GUI之间传输变量和数据的方法。我知道脚本变量/数据和GUI变量/数据保存在不同的工作区中;我只需要一些简单的方法来在两者之间进行沟通。
感谢。
答案 0 :(得分:1)
一种简单的方法是使用setappdata和getappdata来存储变量/输入/任何内容,以便可以从任何地方访问它。
让我们假设您在脚本中删除了一些要在GUI中检索的变量:
A = rand(100,100);
然后使用setappdata,如下所示:
setappdata(0,'VariableName',A);
将数据存储在根目录中(0作为第一个输入),这意味着在GUI中使用这样的getappdata:
A_in_GUI = getappdata(0,'VariableName');
只要您使用正确的变量名称,将允许您从GUI或任何其他脚本中检索值。请注意,您可以使用某个图形/ GUI的句柄来保存数据,如下所示;
setappdata(handles.Something,'VariableName','A);
但是,如果您关闭该图,例如,您可能无法检索您的变量。
正如Tyler所指出的,在GUI内部不同回调之间共享数据的一种好方法是使用其句柄结构。更多信息here。
最后注意事项:
如果您不想花时间在脚本和GUI之间共享许多变量,您可以将所有变量存储在一个大型结构中,并仅在此结构上使用setappdata / getappdata,这将保留所有变量已更新。
例如,您可以在脚本中编写类似的内容:
Variables_Structure.MyFavoriteNumber = pi;
Variables_Structure.MyFavoriteSport = 'ice hockey';
setappdata(0,'MyVariables',Variables_Structure);
然后在GUI中使用变量的getappdata:
Variables_in_GUI = getappdata(0,'MyVariables');