如何在GUI中加载.mat文件,matlab应用程序开发

shstlldc  于 2023-02-09  发布在  Matlab
关注(0)|答案(1)|浏览(354)

我试图创建一个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
cvxl0en2

cvxl0en21#

就像Wolfie在他的评论中说的那样,.mat文件中的变量被加载到该函数的私有工作空间中,一旦退出,该私有工作空间就会被清除。
因此,在函数中,您应该能够再次循环应用程序属性,并设置从文件加载的值。
请注意,如果您添加了一个断点,正如Wolfie所说,您应该能够看到私有工作区,并且您加载的变量将一直在那里,直到函数退出。
或者,您可以将变量加载到结构中:

S = load(selectedfile);

(See https://uk.mathworks.com/help/matlab/ref/load.html以获得更多细节)并返回该结构,

function [S] = LoadButtonPushed(app, event) % Loading element

你必须修改interface/load函数调用来接受返回的变量,我不确定你是否可以将结构的内容添加到全局名称空间中,但是,你可以通过加载的结构访问它们:

S.props

相关问题