MATLAB:在脚本和 GUI 之间传输变量
Posted
技术标签:
【中文标题】MATLAB:在脚本和 GUI 之间传输变量【英文标题】:MATLAB: Transferring variables between script and GUI 【发布时间】:2014-08-19 19:59:45 【问题描述】:我不熟悉在 Matlab 中使用 GUIDE 和 GUI。
我在 Matlab 中运行一个脚本,它将接受用户的初始输入,然后继续打开一个 GUI(使用 GUIDE 创建),它将接受用户的进一步输入。但是,我想不出一种在脚本和 GUI 之间传输变量和数据的方法。我知道脚本变量/数据和 GUI 变量/数据保存在不同的工作区中;我只需要一些简单的方式在两者之间进行交流。
谢谢。
【问题讨论】:
查看 GUI 句柄。 mathworks.com/help/matlab/ref/guihandles.html 【参考方案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 中获取 appdata:
Variables_in_GUI = getappdata(0,'MyVariables');
【讨论】:
非常感谢。这很有帮助! 太棒了!如果它帮助您解决了您的问题,您能否通过单击绿色勾号将我的答案标记为“已接受”?谢谢!以上是关于MATLAB:在脚本和 GUI 之间传输变量的主要内容,如果未能解决你的问题,请参考以下文章