Question stupide et simple - est-ce que la valeur de gcf
en matlab sera toujours le numéro de la figure de la figure active? C'est-à-dire, si je travaille sur la Figure 5, gcf
retournera-t-il toujours 5
?
Réponses
Trop de publicités?GCF renvoie le handle de la "figure actuelle". Il s'agit toujours du numéro de la figure active. Cependant, si vous cliquez sur une autre figure entre-temps, cette autre figure deviendra active. Ainsi, si vous savez déjà avec quelle figure vous travaillez, que ce soit parce que vous avez forcé le handle à 5 en appelant figure(5)
, ou parce que vous avez capturé le handle dans une variable en appelant fh=figure;
, il est plus sûr d'utiliser le handle au lieu de gcf
chaque fois que vous voulez modifier la figure afin d'éviter de risquer de rendre involontairement une autre figure active.
Aussi, s'il n'y a pas de figure actuellement ouverte, gcf
ouvrira une nouvelle figure.
C'est un peu plus complexe qu'une simple réponse "oui" ou "non". Le gestionnaire de la figure actuelle correspondra généralement au numéro affiché en haut à gauche de la fenêtre de la figure, mais ce numéro n'est affiché que lorsque la propriété de la figure 'NumberTitle'
est définie sur 'on'
(par défaut).
Autre subtilité, le gestionnaire de la figure n'est pas forcément un entier. Il existe une propriété de la figure 'IntegerHandle'
qui détermine si le gestionnaire créé pour la figure est un entier ou un nombre réel non réutilisable. Si cette propriété est définie sur 'off'
, vous obtenez des valeurs de gestionnaire qui ne sont pas des entiers, donc la première figure que vous ouvrez n'aura pas un gestionnaire de 1. Par exemple :
>> hFigure = figure('IntegerHandle','off') %# La seule fenêtre ouverte
hFigure =
173.0040
Et la figure est numérotée en conséquence :
Remarquez que lorsque le numéro de la figure et le gestionnaire sont affichés, il y a un arrondi du nombre. La fenêtre de la figure n'affiche que 6 chiffres après la virgule. Il devient évident que vous travaillez avec des nombres à virgule flottante lorsque vous changez le format de la fenêtre de commande pour afficher davantage de décimales :
>> format long
>> hFigure
hFigure =
1.730040283203125e+002
Dans ce cas, le numéro de figure affiché et le gestionnaire de la figure diffèrent légèrement.
Oui, gcf
renverra le handle de la figure actuellement sélectionnée (ou active). Selon la documentation,
H = GCF renvoie le handle de la figure actuelle. La figure actuelle est la fenêtre dans laquelle les commandes graphiques telles que PLOT, TITLE, SURF, etc. dessineront.
Mais rappelez-vous aussi que :
La figure actuelle n'est pas nécessairement la figure la plus au premier plan à l'écran.
Une façon de rendre une figure "actuelle" est :
En cliquant sur les uimenus et uicontrols contenus dans une figure, ou en cliquant sur la zone de dessin d'une figure, cette figure devient alors actuelle.
Une autre façon est d'utiliser le handle de la figure. Par exemple, si vous avez appelé la figure en tant que h=figure;
, alors figure(h)
la rendra figure actuelle.