【问题标题】:Matlab - Easy way to save entire figure/GUIMatlab - 保存整个图形/GUI的简单方法
【发布时间】:2015-08-03 03:13:29
【问题描述】:

我正在寻找一种简单的方法来保存我的 GUI 的当前状态并能够再次加载这个保存的状态。我知道有这方面的视频 (http://blogs.mathworks.com/videos/2010/12/10/how-to-save-and-restore-state-of-a-gui-in-matlab/),但不知何故,它在我的电脑上不起作用。

我想到了这样的事情:(我使用 gcf 是因为我不知道整个 GUI 的“主句柄”)

%Save Data
currentdata = getappdata(gcf);
uisave('currentdata',date);

%Load Data
[filename,pathname]=uigetfile({'*.mat'},'Select input file');
load([pathname,filename]);

这种方式的问题是,保存的数据是在一个新图形中打开的,而不是我选择打开它的当前图形。

我也想知道是否可以将一个文件夹(添加到 matlab 路径)设置为默认文件夹用于保存/加载。

感谢您的帮助!克劳斯

【问题讨论】:

    标签: matlab user-interface save


    【解决方案1】:

    由于您的currentdata 保留了 GUI 的整个句柄,包括 GUI 主图形的句柄,所以当您加载它时,将打开一个新图形。

    在上述视频中所做的是:只需保存您需要在以后的会话中保留/重新加载的字段/数据。

    因此,要么将这些特定字段保存在 GUI 的句柄中并一一重新加载,要么可以使用视频下方评论中提到的 exchange functions

    【讨论】:

    • 感谢您的回答!有没有比 uiremember/uirestore 更简单的方法来配置 uisave 或其他东西?
    • uiremember/restore 似乎也总是恢复最后一个状态,但我希望能够保存不同的状态(一些有趣的情况)并能够一个接一个地加载
    • 你看过这些函数的代码吗?您可以将保存状态的部分更改为mem_file,并将代码包装在 GUI 中按钮的 CallbackFcn 中,这样您就可以决定要保存/加载哪些状态。他们提供了工具,因此您不必重写它,但是如何使用这些工具是您的工作。
    • 我试过了,但我对 matlab 比较陌生,因此不太了解它(这就是为什么我希望可以根据我的需要修改 uisave)。我什至看不到代码“last_state.mat”实际保存到任何目录的位置。我首先考虑添加Filename=uiputfile('*.mat','Save); mem_file=Filename,但这还不够。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多