Each time I run my code it produces 100 figures. So, I have to waste my time and save each one of them. Is there a command that can do that work for me by saving all the figures at once?

댓글 수: 1

Hira
Hira 2022년 9월 27일
m=1;
title("S31 Plot Measurement Number ("+m+")")
xlabel('Delay')
ylabel('Mag(S31)')
saveas(gcf,"S31_plot_"+name+"_Measurement_No_"+m+".fig")
close(gcf)
m=m+1;

댓글을 달려면 로그인하십시오.

 채택된 답변

Jan
Jan 2015년 3월 11일

15 개 추천

No, there is no such command. But it is easy to write one:
FolderName = tempdir; % Your destination folder
FigList = findobj(allchild(0), 'flat', 'Type', 'figure');
for iFig = 1:length(FigList)
FigHandle = FigList(iFig);
FigName = get(FigHandle, 'Name');
savefig(FigHandle, fullfile(FolderName, FigName, '.fig'));
end
Adjust the FigName to your needs.

댓글 수: 5

Konstantinos
Konstantinos 2015년 3월 19일
I used this code and I get this: "Undefined function 'savefig' for input arguments of type 'double'." I have matlab 2013b edition, if it matters. can you help me ?
John Sunwoo
John Sunwoo 2018년 12월 8일
편집: John Sunwoo 2018년 12월 8일
I think the code needs 'brackets'.. for fullfile(). See below
FolderName = tempdir; % Your destination folder
FigList = findobj(allchild(0), 'flat', 'Type', 'figure');
for iFig = 1:length(FigList)
FigHandle = FigList(iFig);
FigName = get(FigHandle, 'Name');
savefig(FigHandle, fullfile(FolderName, [FigName, '.fig'])); %<---- 'Brackets'
end
Mango Wang
Mango Wang 2019년 2월 1일
Just to complement, there is no need to use for loop to save them one by one.
savefig(FigList,filename) could save all the handles together in one file.
Lars Abrahamsson
Lars Abrahamsson 2020년 5월 18일
I noticed one "problem" when saving all figures into one file.
When loading them back with "openfig" the numbers/order of the figures becomes revered.
Why is that? Can anything be done to counteract that?
If they load backwards, I'm guessing findobj is LIFO. Maybe try
savefig(FigList(end:-1:1),filename)
instead?

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Luke Shaw
Luke Shaw 2018년 11월 30일
편집: Luke Shaw 2018년 11월 30일

12 개 추천

Missed a make current step: set(0, 'CurrentFigure', figureHandle)
FolderName = tempdir; % Your destination folder
FigList = findobj(allchild(0), 'flat', 'Type', 'figure');
for iFig = 1:length(FigList)
FigHandle = FigList(iFig);
FigName = num2str(get(FigHandle, 'Number'));
set(0, 'CurrentFigure', FigHandle);
savefig(fullfile(FolderName, [FigName '.fig']));
end

댓글 수: 5

Tanziha Mahjabin
Tanziha Mahjabin 2020년 2월 17일
Hi,
i have already saved figures in a folder. how can i make a gif in matlab combining all of them?
Ali Awada
Ali Awada 2021년 10월 16일
편집: Ali Awada 2021년 10월 16일
Hi Luke,
Thanks for the code works perfectly.
I have a question:
how can i save the figure by the title i have given?
Your code saves them as "1.fig" where 1 corresponds to figure(1) in the code.
manvir kaur
manvir kaur 2022년 6월 6일
i have same issue, this code works perfectly but i want to save figures in png format. So how to do that. Thanks
Nabil Mederbel
Nabil Mederbel 2022년 6월 11일
Hi guys,
I tried to save figures with '.eps' format ...didnt work.
any idea ? thx
This worked for '.png' format, it should work for whatever format you want.
FolderName = tempdir; % Your destination folder
FigList = findobj(allchild(0), 'flat', 'Type', 'figure');
for iFig = 1:length(FigList)
FigHandle = FigList(iFig);
FigName = num2str(get(FigHandle, 'Number'));
set(0, 'CurrentFigure', FigHandle);
saveas(FigHandle,fullfile(FolderName, [FigName '.png'])); %Specify format for the figure
end

댓글을 달려면 로그인하십시오.

Tanveer
Tanveer 2022년 9월 18일

4 개 추천

FolderName = 'xx'; % Your destination folder
FigList = findobj(allchild(0), 'flat', 'Type', 'figure');
for iFig = 1:length(FigList)
FigHandle = FigList(iFig);
FigName = ['Fig' num2str(iFig)];
savefig(FigHandle, fullfile(FolderName, [FigName '.fig']));
saveas(FigHandle, fullfile(FolderName, [FigName '.png']));
% saveas(FigHandle,filename,formattype)
end
Mehri Mehrnia
Mehri Mehrnia 2022년 8월 3일

0 개 추천

Based on the answers, it means there is no 1 line of code which can save all open plots?

댓글 수: 1

Hira
Hira 2022년 9월 27일
m=1;
title("S31 Plot Measurement Number ("+m+")")
xlabel('Delay')
ylabel('Mag(S31)')
saveas(gcf,"S31_plot_"+name+"_Measurement_No_"+m+".fig")
close(gcf)
m=m+1;

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Printing and Saving에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by