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 at 20:30

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.