MATLAB Answers

0

How do I close a specific figure

Asked by Nimrodb on 25 Feb 2013
Latest activity Commented on by Laercio Barbosa on 21 Mar 2019
I have a GUI. This GUI runs a simulation the at the end of it I open a figure to display results.
When I re-run the simulation - the old figure is kept open.
How do I close the old figure without closing the GUI?
('close all' close all the windows including the GUI).

  1 Comment

Sign in to comment.

4 Answers

Answer by Morteza
on 25 Feb 2013

In the section of simulation use these line:
handles.H = figure(2)
plot(rand(10,1));
waitforbuttonpress;
close(handles.H)
when you press any button ploter figure automatically will be closed

  0 Comments

Sign in to comment.


Answer by Sean de Wolski
on 25 Feb 2013

hFig = figure;
surf(peaks);
To close that figure:
close(hFig)

  3 Comments

I thought about that - but when I re-run the simulation - I see that hFig is "unassigned"
Then that handle hasn't been stored. You should store that handle in whatever is calling the simulation so that it can close it.
as a global in the beginning of the main function? The simulation is called from a GUI built by GUIDE.
The flow is:
GUI made by GUIDE --> Simulation ---> Results function (that opens a Figure)
Where and how do I save the figure handle?

Sign in to comment.


Answer by Laercio Barbosa on 21 Jun 2017
Edited by Laercio Barbosa on 21 Mar 2019

I am passing here to let my contribution as I had exactly the same problem. If you know the name or tag of the GUI do:
% Close all figures still openned except the GUI which property 'name' is equal 'nameOfQUI'
figHandles = findobj('type', 'figure', '-not', 'name', 'nameOfGUI');
close(figHandles);
or
% Close all figures still openned except the GUI which property 'tag' is equal 'tagOfQUI'
figHandles = findobj('type', 'figure', '-not', 'tag', 'tagOfGUI');
close(figHandles);

  2 Comments

@Laercio Barbosa
You only need to fill in ''tag'' and ''tagOfGUI'', right? So if the tag of my GUI is ''figure1'', then:
figHandles = findobj('type', 'figure', '-not', 'figure1', 'figure1');
close(figHandles);
should do it? It doesn't work for me and I am searching for my error...
@beginner94, sorry for the late response.
No. You don't need fill all the fields you mentioned. Only the last one. Basically what we are doing is:
Find objects of type figure, but not that one where figure property is equal figure1.
or still
Find objects of type figure, but not that one where tag property is equal "tagname".
In your case
figHandles = findobj('type', 'figure', '-not', 'figure', 'figure1');
close(figHandles);

Sign in to comment.


Answer by João Miguel Marinheiro on 21 Feb 2019
Edited by João Miguel Marinheiro on 21 Feb 2019

close(figure(<number of figure>))

  0 Comments

Sign in to comment.