J'ai plusieurs chiffres ouverts et je veux les mettre à jour indépendamment pendant l'exécution. L'exemple de jouet suivant devrait clarifier mon intention:
clf;
figure('name', 'a and b'); % a and b should be plotted to this window
hold on;
ylim([-100, 100]);
figure('name', 'c'); % only c should be plotted to this window
a = 0;
b = [];
for i = 1:100
a = a + 1;
b = [b, -i];
c = b;
xlim([0, i]);
plot(i, a, 'o');
plot(i, b(i), '.r');
drawnow;
end
Le problème ici est que lorsque j'ouvre le second figure
, je ne peux pas dire aux fonctions plot
de tracer vers le premier au lieu du second (et seul c
doit être tracé à la seconde).
Vous pouvez utiliser quelque chose comme
figure(1)
plot(x,y) % this will go on figure 1
figure(2)
plot(z,w) % this will go on another figure
La commande mettra également la figure visible et au-dessus de tout.
Vous pouvez basculer entre les chiffres selon les besoins en exécutant la même commande figure
. Alternativement, vous pouvez également utiliser la poignée de la figure:
h=figure(...)
puis lancez figure(h)
au lieu d'utiliser des index numériques. Avec cette syntaxe, vous pouvez également empêcher la figure d'apparaître en haut en utilisant
set(0,'CurrentFigure',h)
Vous pouvez spécifier l'objet axes dans la commande plot. Vois ici:
Alors, ouvrez une figure, insérez les axes, enregistrez l'id de l'objet axes, puis tracez-y:
figure
hAx1 = axes;
plot(hAx1, 1, 1, '*r')
hold on
figure
hAx2 = axes;
plot(hAx2, 2, 1, '*r')
hold on
plot(hAx2, 3, 4, '*b')
plot(hAx1, 3, 3, '*b')
Alternativement, vous pouvez utiliser gca
au lieu de créer vous-même l'objet axes (car il est automatiquement créé dans la figure réelle, lorsqu'il n'existe pas!)
figure
plot(1,1)
hAx1 = gca;
hold on
figure
plot(2,2)
plot(hAx1, 3, 3)
Voir la hiérarchie suivante représentant la relation entre les figures et les axes
De http://www.mathworks.de/help/techdoc/learn_matlab/f3-15974.html .