web-dev-qa-db-fra.com

Comment obtenir les poignées de toutes les figures ouvertes dans MATLAB

J'ai neuf figures ouvertes dans matlab (générées par une autre fonction) et je veux les imprimer toutes dans un fichier. Est-ce que quelqu'un sait comment saisir les poignées de toutes les figures ouvertes dans MATLAB?

Je connais gcf mais il ne semble pas faire ce que je veux.

61
Liz

Il y a quelques façons de le faire. Une façon de faire est d'obtenir tous les enfants de objet racine (représenté dans les versions précédentes par le handle 0):

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

Ou vous pouvez utiliser la fonction findobj :

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

Si l'une des figures a poignées cachées , vous pouvez utiliser à la place la fonction findall :

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

L'une des meilleures choses à faire est de NE PAS avoir besoin de chercher les poignées. Lorsque vous créez chaque figure, capturez sa poignée.

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

Comme l'un des développeurs ici m'a dit:

On les appelle des poignées, car vous êtes censé les garder

16
MatlabDoug

Je pense que findall devrait fonctionner

handles=findall(0,'type','figure')

11
Chris

Vous avez de bonnes réponses pour la masse des poignées. Mais une autre astuce pour la question d'origine - imprimez toutes les figures à classer: vous pouvez utiliser l'option publish , sans avoir à traiter les figures ou les poignées.

6
Adiel