MATLAB:在脚本和GUI之间传输变量

时间:2014-08-19 19:59:46

标签: matlab user-interface

我是使用GUIDE并在Matlab中使用GUI的新手。

我在Matlab中运行一个脚本,该脚本将接受来自用户的初始输入,然后继续打开GUI(使用GUIDE创建),该GUI将接受来自用户的进一步输入。但是,我无法想出一种在脚本和GUI之间传输变量和数据的方法。我知道脚本变量/数据和GUI变量/数据保存在不同的工作区中;我只需要一些简单的方法来在两者之间进行沟通。

感谢。

1 个答案:

答案 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');
相关问题