【问题标题】:How does one load a .mat file in the GUI, matlab app development如何在 GUI 中加载 .mat 文件,matlab 应用程序开发
【发布时间】:2023-02-07 03:17:28
【问题描述】:

我正在尝试创建一个 MATLAB 应用程序,将特定字段保存在 .mat 文件中并允许自定义命名。保存似乎有效,但尝试加载不会导致任何改变。 任何帮助,将不胜感激

function SaveButtonPushed(app, event) % Saving element
            
            props = properties(app);
            lp    = length(props);
            values   = cell(1,lp);
            visibilities   = cell(1,lp);
            
            for i = 1:lp
                propName = props{1};
                property = app.(propName);
                if isprop(property, 'Value')
                    values{i} = app.(propName).Value;
                end
%                 if isprop(property, 'Visible')
%                     visibilities{i} = app.(props{i}).Visible;
%                 end
            end
            
            
            file = uiputfile('*.mat', "Save Message" );
            
            if file
                save(file, 'props', 'values', 'visibilities');
            end
end
function LoadButtonPushed(app, event) % Loading element
            [file,path] = uigetfile('*.mat');
            selectedfile = fullfile(file);
            load(selectedfile)
end

【问题讨论】:

  • 您调用 load 然后退出该函数,您加载的所有变量都在 LoadButtonPushed 函数的工作区中,并且在该函数退出时对应用程序不可见 - 您希望这些变量发生什么?您是否添加了断点并逐步执行此函数以查看发生了什么?

标签: matlab matlab-app-designer


【解决方案1】:

就像 Wolfie 在他的评论中所说的那样。 .mat 文件中的变量被加载到该函数的私有工作区中,该工作区在退出时立即被清除。

因此,在该函数中,您应该能够再次遍历您的应用程序属性并设置从文件加载的值。

请注意,如果您添加一个断点,如 Wolfie 所说,您应该能够看到私有工作区,并且您加载的变量将一直存在,直到函数退出。

或者,您可以将变量加载到结构中:

S = load(selectedfile);

(详见https://uk.mathworks.com/help/matlab/ref/load.html) 并返回那个结构,

return S;

您将不得不更改接口/加载函数调用以接受返回的变量,而且我不确定您是否可以将结构的内容添加到全局命名空间。但是,您可以通过加载的结构访问它们:

S.props

【讨论】:

    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2011-08-25
    • 2013-09-01
    • 2011-04-29
    相关资源
    最近更新 更多