Matlab - LiveScript - Réalisation de Plot dynamique
Sommaire
Introduction
Contrairement aux Scripts classiques de Matlab, les LiveScript permettent d'ajouter des éléments interactifs pour modifier en temps réels la valeur de certaines variables et mettre à jour en même temps les graphiques qui y sont liés. Cela permet par exemple d'ajouter un slider pour augmenter ou non un échantillonnage d'une fonction.
Dans l'exemple qui va suivre, nous allons réaliser un LiveScript qui permet de modifier à l'aide d'un Slider, le nombre de fonctions qui seront sommées dans une série de fourriers et ainsi pouvoir visualiser la conséquence de ce nombre sur la représentation graphique.
Création du fichier
La création d'un LiveScript se fait de la même façon qu'un Script classique.
Rédaction du script
Lorsque le LiveScript est créé, la première fenêtre qui apparait devant vous est une fenêtre vide avec une case. La case grise permet la saisie du scripte, le reste permet de faire du formatage.
Vous pouvez passer du mode Code au mode Texte en cliquant sur le bouton "Text" de la catégorie "Live Editor", de cette façon vous habillez votre scripte.
Pour simplifier la réalisation de notre programme, nous allons partir d'un programme déjà réalisé.
clear variables;
T = -10:0.1:10;
for k=1:length(T)
G2(k) = g(T(k),2);
G10(k) = g(T(k),10);
G30(k) = g(T(k),30);
G100(k) = g(T(k),100);
end
figure;
plot(T,G2,T,G10,T,G30,T,G100);
legend('N = 2','N = 10', 'N = 30', 'N = 100');
title("Graphique");
grid on;
xlabel("Axe des ordonnées");
ylabel("Axe des abscisses");
PS : L'utilisation de "clear variables" au lieu de "clear all" permet de gagner en performance, dans notre utilisation, cela suffira.
Et la fonction g(t,N)
function y = g(t,N)
y = 0;
for k = 1:N
y = y + (sin(k*t*(pi/3))/k);
end
y = (1/pi)*y;
end
Ce code reprend l'exercice 2 du TD3 d'Outil Logiciel qui pour rappel la fonction était :
Et voici le résultat graphique de ce programme :
Notre objectif sera donc qu'au lieu d'afficher plusieurs valeurs de N, de directement avoir un Slider qui permet de modifier cette valeur et de voir les changements apparaitre. Créons alors un LiveScript à côté de notre "g.m" (notre fichier de la fonction), et copions le code précédant dans l'encadré gris. Plaçons le curseur du clavier entre "clear variables;" et "T = -10:0.1:10;", de façon à ensuite cliquer sur le bouton "Control" (Catégorie "Live Editor", section "Code"). Vous devriez voir un "Numeric Slider" apparaitre.
De ce fait une boite de dialogue s'ouvre alors.
- Label : Nom que portera ce Slider
- Min : Valeur minimale où celui-ci coulissera
- Max : Valeur maximale où celui-ci coulissera
- Step : Le pas entre chaque valeur du slider
Exemple : une valeur minimale de 1 et un pas de 2 fera que le slider ne proposera que des valeurs impaires.
Dans notre situation, nous allons faire un Slider qui ira de 1 à 100 avec un pas de 1, nous ferons alors par la suite une somme de 1 à 100 fonctions pour notre DSF. Et l'intérêt d'avoir placé notre slider ici, est que nous pouvons associé la valeur du slider à une variable, et cela, juste en plaçant "N =" avant le slider si on veut associé sa valeur à N.
Conclusion
Cela ressemblera donc à cela :
On remarquera que notre boucle for aura été modifié pour ne laisser plus que "G2", la légende et la fonction plot sera également adapté en conséquence. De plus, le LiveScript affichera les plots directement dans la fenêtre de droite.
Une fois qu'on a compris comment fonctionne un Slider, il est aisé d'ajouter un autre type d'actionneurs, un champ peut être plus agréable à l'utilisation dans certaines situations.
Il faudra cette fois-ci, faire un champ de type "Double" et adressé la valeur à une variable comme faite précédemment.
On peut ajouter autant de contrôleurs interactifs que l'on souhaite
Ressources complémentaires
- Plus d'information sur les contrôleurs interactifs : https://fr.mathworks.com/help/matlab/matlab_prog/add-interactive-controls-to-a-live-script.html
- Guide d'utilisation des LiveScript : https://www.youtube.com/watch?v=hUXTyPYRidM
- Présentation des fonctionnalités du LiveScript : https://www.youtube.com/watch?v=AdoVhCvoh44