How can I extract Information from .FIG Files?

1 次查看(过去 30 天)
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 = ...;
plot(X, Y1, X, Y2, etc...)

回答(1 个)

Walter Roberson
Walter Roberson 2020-5-19
projectdir = 'appropriate/directory';
dinfo = dir( fullfile(projectdir, '*.fig'));
nfiles = length(dinfo);
filenames = fullfile({dinfo.folder}, {});
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');
if iscell(xd)
temp = [xd(:), yd(:)].';
plot(plotax, temp{:}, 'DisplayName', basename);
plot(plotax, xd, yd, 'DisplayName', basename);
hold(plotax, 'on');
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.


Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by