How to retrieve handles (data) of MATLAB GUI from saved .fig file?

2 vues (au cours des 30 derniers jours)
Dominik Mattioli
Dominik Mattioli le 3 Avr 2018
I need to retrieve about 100 saved GUI's (templated from Guide), so I'd rather not open each file and manually load the data into the workspace. Is there an automated way to load these files and grab the handles.output data?
Folder = uigetdir(''); % Get my folder.
currentDir = dir(Folder);
collectiveData = cell(length(currentDir)-4,1);
for idx = 4:length(currentDir) % Loop through all saved files, skipping "." and ".." and ".DS_Store".
load(currentDir(idx).name); % Load saved file
% load handles of figure or something?
% collectiveData{idx-4} = handles.output; % Ideally do this?
end
I imagine that it would look like that but I can't figure out how to get my gui into the workspace programmatically :(

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Avr 2018
You can openfig() the file which will return the handle to the figure, and you can then guidata() that to retrieve the handles structure.
However in my experience, handles.output typically has nothing useful until the gui has been executed and some step deliberately puts information there.
  2 commentaires
Dominik Mattioli
Dominik Mattioli le 3 Avr 2018
I ended up doing this, although opening 100+ figures is a little taxing. Thank you for the answer!
Walter Roberson
Walter Roberson le 3 Avr 2018
Folder = uigetdir(''); % Get my folder.
currentDir = dir( Folder);
currentDir([currentDir.isdir]) = []; %., .. and any other folders
currentdir(ismember({currentDir.name}, {'.DS_Store'})) = [];
filenames = fullfile(currentDir, {currentDir.name});
nfile = length(filenames);
collectiveData = cell(nfile,1);
for idx = 1:nfile
try
fig = openfig(filenames{idx});
figh = guidata(fig);
collectiveData{idx} = figh.output;
delete(figh);
catch
if isgraphics(figh); delete(figh); end
end
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Migrate GUIDE Apps dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by