How do I close a specific figure

88 vues (au cours des 30 derniers jours)
Nimrodb
Nimrodb le 25 Fév 2013
Commenté : Laercio Barbosa le 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 commentaire
babita verma
babita verma le 28 Nov 2017
close(gcf)

Connectez-vous pour commenter.

Réponses (4)

João Miguel Marinheiro
João Miguel Marinheiro le 21 Fév 2019
Modifié(e) : João Miguel Marinheiro le 21 Fév 2019
close(figure(<number of figure>))

Morteza
Morteza le 25 Fév 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

Sean de Wolski
Sean de Wolski le 25 Fév 2013
hFig = figure;
surf(peaks);
To close that figure:
close(hFig)
  3 commentaires
Sean de Wolski
Sean de Wolski le 25 Fév 2013
Then that handle hasn't been stored. You should store that handle in whatever is calling the simulation so that it can close it.
Nimrodb
Nimrodb le 26 Fév 2013
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?

Connectez-vous pour commenter.


Laercio Barbosa
Laercio Barbosa le 21 Juin 2017
Modifié(e) : Laercio Barbosa le 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 commentaires
beginner94
beginner94 le 16 Sep 2018
@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...
Laercio Barbosa
Laercio Barbosa le 21 Mar 2019
@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);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by