How do I get the handles of all open figures in MATLAB

MatlabMatlab FigureFigures

Matlab Problem Overview

I have nine open figures in matlab (generated by another function) and I want to print them all to file. Does anyone know how to grab the handles of all open figures in MATLAB?

I know about gcf but it doesn't seem to do what I want.

Matlab Solutions

Solution 1 - Matlab

There are a few ways to do this. One way to do this is to get all the children of the root object (represented in prior versions by the handle 0):

figHandles = get(groot, 'Children');  % Since version R2014b
figHandles = get(0, 'Children');      % Earlier versions

Or you could use the function findobj:

figHandles = findobj('Type', 'figure');

If any of the figures have hidden handles, you can instead use the function findall:

figHandles = findall(groot, 'Type', 'figure');  % Since version R2014b
figHandles = findall(0, 'Type', 'figure');      % Earlier versions

Solution 2 - Matlab

One of the best things to do is to NOT need to look for the handles. When you create each figure, capture its handle.

h(1) = figure;
h(2) = figure;

As one of the developers here told me:

> They are called handles, because you are supposed to hold on to them

Solution 3 - Matlab

I think findall should work


Solution 4 - Matlab

You've get fine answers for the handles mass. But another tip for the original question- print all the figures to file: you can use publish option, without dealing with figrues or handles.


All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLizView Question on Stackoverflow
Solution 1 - MatlabgnoviceView Answer on Stackoverflow
Solution 2 - MatlabMatlabDougView Answer on Stackoverflow
Solution 3 - MatlabChrisView Answer on Stackoverflow
Solution 4 - MatlabAdielView Answer on Stackoverflow