How can I extract Information from .FIG Files?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have 200+ .FIG files with X & Y Data. I'm trying to do something like:
X = 1:1000;
Y1 = get(Xdata, 'Figname.fig');
Y2 = ...;
etc...
plot(X, Y1, X, Y2, etc...)
0 commentaires
Réponses (1)
Walter Roberson
le 19 Mai 2020
projectdir = 'appropriate/directory';
dinfo = dir( fullfile(projectdir, '*.fig'));
nfiles = length(dinfo);
filenames = fullfile({dinfo.folder}, {dinfo.name});
plotfig = figure();
plotax = axes('Parent', plotfig);
for K = 1 : nfiles
thisfile = filenames{K};
[~, basename, ~} = fileparts(thisfile);
fig = openfig(thisfile, 'new', 'invisible');
hasx = findobj(fig, '-property', 'XData');
xd = get(hasx, 'XData');
yd = get(hasx, 'YData');
delete(fig)
if iscell(xd)
temp = [xd(:), yd(:)].';
plot(plotax, temp{:}, 'DisplayName', basename);
else
plot(plotax, xd, yd, 'DisplayName', basename);
end
hold(plotax, 'on');
drawnow;
end
legend(plotax, 'show')
I do not assume that there is only one object with XData per figure.
I do assume that the object to be extracted from has a visible handle. This was a deliberate design decision; you could switch to findall() instead of findobj() if it is not true. One of the reasons I made the choice is that in some cases lines from legend can appear as objects that have XData property.
0 commentaires
Voir également
Catégories
En savoir plus sur Specifying Target for Graphics Output 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!