La bonne façon de faire des animations avec Matlab

Cette page explique comment réaliser des animations avec Matlab. L'idée est de créer une figure, récupérer les objets associés et d'actualiser les propriétés de ces objets. La page présente un guide étape par étape. Si vous êtes déjà familié avec Matlab, vous pouvez aller directement au code d'exemple.

Création de la figure

Pour commencer, créons la figure. Ici, nous allons juste dessiner un point aux coordonnées (10,10) dans une nouvelle figure :

figure

Forcer les échelles entre 0 et 20 sur chaque axe :

axis ([0,20,0,20])

Conserve le contenu précédent dans la figure :

hold on

Dessiner un point et récupérer les propriétés

La commande suivante dessine un point. Notez que nous allons récupérer les propriétés du plot dans l'objet h:

h = plot (10,10,'o');

La figure devrait normalement ressembler à ça :

Affichage d'un point dans une figure Matlab

Lorsuqe l'on affiche le point, on récupére un objet (h) qui contient les propriétés du plot. Il est possible d'afficher ces propriétés avec la commande suivante :

>> get (h)
    AlignVertexCenters: 'off'
            Annotation: [1×1 matlab.graphics.eventdata.Annotation]
          BeingDeleted: 'off'
            BusyAction: 'queue'
         ButtonDownFcn: ''
              Children: [0×0 GraphicsPlaceholder]
              Clipping: 'on'
                 Color: [0.9290 0.6940 0.1250]
             CreateFcn: ''
             DeleteFcn: ''
           DisplayName: ''
      HandleVisibility: 'on'
               HitTest: 'on'
         Interruptible: 'on'
              LineJoin: 'round'
             LineStyle: 'none'
             LineWidth: 0.5000
                Marker: 'o'
       MarkerEdgeColor: 'auto'
       MarkerFaceColor: 'none'
         MarkerIndices: 1
            MarkerSize: 6
                Parent: [1×1 Axes]
         PickableParts: 'visible'
              Selected: 'off'
    SelectionHighlight: 'on'
                   Tag: ''
                  Type: 'line'
         UIContextMenu: [0×0 GraphicsPlaceholder]
              UserData: []
               Visible: 'on'
                 XData: 10
             XDataMode: 'manual'
           XDataSource: ''
                 YData: 10
           YDataSource: ''
                 ZData: [1×0 double]
           ZDataSource: ''

La commande précédente affiche toutes les propriétés du point. Les propriétés les plus utiles sont :

Actualiser les propriétés

Pour créer une animation, nous n'allons pas redessiner le point. Nous allons actualiser ses propriétés avec la commande set. Pour commencer, changeons le marqueur du point :

set (h, 'Marker', 'x')

Le marker devrait être modifié pour une croix :

Le marqueur changé en croix dans la figure Matlab

Nous pouvons aussi changer la couleur du point :

set (h, 'Color', 'r')

La couleur devrait être changé en rouge :

Changer la couleur du point dans la figure Matlab

L'attibut le plus important pour créer une animation est de pouvoir actualiser les coordonnées du point. Il est possible de modifier plusieurs attributs en une seule commande. La ligne suivante modifie simultanément les coordonnées X et Y du point :

set (h, 'XData',3, 'YData', 5)

Ici, le point est déplacé au coordonnées (3,5) :

Le point est déplacé vers de nouvelles coordonnées dans la figure Matlab

Animation dans une boucle

Le script suivant dessine une ligne verticale et anime cette ligne de façon à la faire tourner autour du centre du repère (0,0) :

close all;
clear all;

%% Initialization of the figure

% Draw the line and get line properties
l = line ([0,0] , [0,1]);
% Set axis 
axis ([-2,2,-2,2]);

%% Main loop

% Loop on the line angle (from 0 radians to 2pi radians
for a=0:0.01:2*pi
    % Update the line coordinates
    set (l, 'XData',[0,sin(a)], 'YData',[0, cos(a)] );

    % Refresh the figure
    drawnow;
end

Voici le résultat :

Voir aussi


Dernière mise à jour : 23/11/2019