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 之间传输变量的主要内容,如果未能解决你的问题,请参考以下文章

matlab 将mat文件中数据赋给另外一个变量

MATLAB:保存文件时显示进度条?

如何附加多个具有相同变量名的 .mat 文件?

如何在 Matlab 中使用 onCleanup 保存变量?

MATLAB:.mat 版本之间的差异

matlab 存储mat文件