我试图创建一个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
1条答案
按热度按时间cvxl0en21#
就像Wolfie在他的评论中说的那样,
.mat
文件中的变量被加载到该函数的私有工作空间中,一旦退出,该私有工作空间就会被清除。因此,在函数中,您应该能够再次循环应用程序属性,并设置从文件加载的值。
请注意,如果您添加了一个断点,正如Wolfie所说,您应该能够看到私有工作区,并且您加载的变量将一直在那里,直到函数退出。
或者,您可以将变量加载到结构中:
(See https://uk.mathworks.com/help/matlab/ref/load.html以获得更多细节)并返回该结构,
你必须修改interface/load函数调用来接受返回的变量,我不确定你是否可以将结构的内容添加到全局名称空间中,但是,你可以通过加载的结构访问它们: