MATLAB Answers

0

How do I close a specific figure

Asked by Nimrodb on 25 Feb 2013
Latest activity Commented on by beginner94 on 16 Sep 2018
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.

3 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

I passing here to let my contribution as I had exactly the same problem. If you know the name or tag of the GUI, it is easy:
% 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);

  1 Comment

@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...

Sign in to comment.