I think that the problem is with the inner for loop. The code seems to know already about the number of figures that it has to write to file from the figures list
for k=(n+1):(n+numel(figures))
baseFileName = sprintf('figure_%d.tif',k);
fullFileName = fullfile(folder_name,baseFileName);
(Is this array initialized with something like figures = findobj('Type','figure'), and so contains all the handles to the open figures?)
So we have the new file name and the figure, but then the following call is made to get all objects and descendants associated with gcf, the "current figure"
Then the code iterates on the length of this object, writing each element in the list to the same output file. And this happens repeatedly since for every k we compute figlist=findobj(gcf); against the same current figure.
I think that all you need to do is remove the inner for loop and have something more like
i=1;
for k=(n+1):(n+numel(figures))
baseFileName = sprintf('figure_%d.tif',k);
fullFileName = fullfile(folder_name,baseFileName);
saveas(figures(i),fullFileName);
i = i+1;
end
The above assumes that figure is an array of all figure handles that you want to save to file.
Best Answer