HOWTO · MATLAB

Comment créer un tracé animé dans MATLAB

Apprenez à créer des tracés animés dans MATLAB à l'aide de la commande drawnow et de la fonction pause. Ce guide propose des méthodes étape par étape, des exemples pratiques et des conseils pour visualiser les données de manière dynamique. Améliorez la présentation de vos données et captez l'attention de votre public grâce aux tracés animés dans MATLAB.

Sur cette page

Utilisez drawnow dans une boucle pour actualiser une figure MATLAB à mesure que les données changent. Ajoutez pause() lorsque vous souhaitez un délai visible ; elle accepte des secondes et ne remplace pas la mise à jour des graphiques. Les exemples utilisent une syntaxe compatible avec Octave, partagée avec MATLAB, et sont fournis à titre d’adaptation ; aucun résultat d’exécution n’est fourni pour ces exemples.

Animer un tracé MATLAB avec drawnow

Cet exemple révèle une courbe sinusoïdale de gauche à droite. La boucle étend les données tracées à chaque itération, axis maintient la vue fixe et drawnow demande à MATLAB de rendre la mise à jour. La ligne bleue et les étiquettes permettent de suivre facilement l’évolution des données. Le titre de la figure et les étiquettes des axes affichés par le code restent en anglais, car le code et sa sortie sont conservés sans modification.

Exécutez cet exemple :

x = 0:0.1:10;
y = sin(x);
warning('off', 'Octave:gnuplot-graphics');
figure;
plot(x(1), y(1), 'b-');
axis([0 10 -1 1]);
title('Animating a Sine Wave');
xlabel('X');
ylabel('sin(X)');
for k = 2:length(x)
    plot(x(1:k), y(1:k), 'b-');
    axis([0 10 -1 1]);
    title('Animating a Sine Wave');
    xlabel('X');
    ylabel('sin(X)');
    drawnow;
    pause(0.02);
end
fprintf(1, 'Animation complete.\n');

Le premier point crée la figure avant la boucle. Chaque passage ultérieur trace la courbe jusqu’au point actuel. Modifiez la plage dans x et la limite horizontale correspondante dans axis ensemble ; modifiez les limites verticales lorsque vos données sortent de la plage actuelle. Les options de plot de MATLAB vous permettent de régler la couleur, le marqueur et l’épaisseur de la ligne.

Contrôler la synchronisation de l’animation avec pause

drawnow met à jour les graphiques affichés ; pause(seconds) retarde la boucle. Par exemple, pause(0.05) demande une attente de 0,05 seconde à chaque itération. Un délai plus court peut donner l’impression d’une animation plus rapide et un délai plus long, d’une animation plus lente, mais le rythme réel dépend aussi du calcul et du rendu, de sorte que cette valeur ne garantit pas une fréquence d’images. Pour afficher chaque mise à jour sans délai délibéré, omettez pause() et conservez drawnow.

Animer plusieurs séries de données dans une seule figure

Créez chaque ligne une seule fois, puis mettez à jour ses données dans la boucle. Les deux séries restent ainsi dans un même axe et vous évitez de recréer la légende à chaque passage. Les étiquettes de la légende distinguent les courbes sinus et cosinus.

x = 0:0.1:10;
warning('off', 'Octave:gnuplot-graphics');
figure;
hold on;
sine_line = plot(x(1), sin(x(1)), 'b-', 'LineWidth', 2);
cosine_line = plot(x(1), cos(x(1)), 'r-', 'LineWidth', 2);
axis([0 10 -1 1]);
title('Sine and Cosine');
xlabel('X');
ylabel('Value');
legend('Sine', 'Cosine');
for k = 2:length(x)
    set(sine_line, 'XData', x(1:k), 'YData', sin(x(1:k)));
    set(cosine_line, 'XData', x(1:k), 'YData', cos(x(1:k)));
    drawnow;
    pause(0.02);
end
hold off;
fprintf(1, 'Animation complete with two series.\n');

Pour vos propres données, remplacez les deux expressions par des tableaux de valeurs correspondantes et mettez à jour les deux lignes jusqu’au même index actuel. Conservez des couleurs ou des styles de ligne distincts et gardez une légende pour que les séries restent identifiables.

Enregistrer ou étendre l’animation

Dans MATLAB, VideoWriter peut enregistrer les images d’une animation sous forme de vidéo. Ouvrez un writer pour le fichier de sortie, capturez chaque image rendue avec getframe, transmettez-la à writeVideo et fermez le writer lorsque la boucle se termine. Adaptez la figure capturée et les paramètres de sortie à votre installation MATLAB ; l’écriture vidéo dépend de MATLAB et du profil vidéo sélectionné, et ce flux de travail n’est pas démontré par les exemples ci-dessus.

Pour animer un autre tracé 2D, mettez à jour ses données dans la même boucle et appelez drawnow. Conservez des limites d’axes fixes lorsque vous souhaitez une vue stable, ou recalculez-les lorsque les données changeantes doivent déterminer la vue. Pour une ligne 3D, utilisez plot3 et mettez à jour les données x, y et z ensemble.

FAQ

Comment puis-je contrôler la vitesse de l’animation ?

Ajustez ou supprimez le délai transmis à pause(). Il est mesuré en secondes, et le rythme perçu dépend aussi du temps de calcul et de rendu.

Puis-je enregistrer un tracé animé sous forme de vidéo ?

Oui. Le flux de travail VideoWriter de MATLAB capture des images et les écrit dans un fichier vidéo ; consultez Enregistrer ou étendre l’animation pour les étapes et les remarques d’adaptation.

Puis-je créer un tracé animé en 3D ?

Oui. Utilisez plot3, mettez à jour les trois tableaux de coordonnées dans la boucle, puis appelez drawnow pour actualiser la figure.

Puis-je animer d’autres types de tracés ?

Oui. Mettez à jour les données ou l’objet graphique d’un nuage de points, d’un diagramme en barres ou d’un autre tracé pris en charge, et appelez drawnow après la mise à jour. Les propriétés de l’objet que vous modifiez dépendent du type de tracé.

Quelle est la différence entre drawnow et pause() ?

drawnow actualise les graphiques pour que les modifications apparaissent dans la figure. pause() attend pendant une durée en secondes. Utilisez les deux lorsque vous avez besoin de mises à jour visibles avec un délai intentionnel.