Introduction
La fonction surf de MATLAB est un outil puissant pour visualiser des données en trois dimensions. Elle permet de créer des surfaces à partir de matrices de données, offrant ainsi une représentation graphique de fonctions à deux variables. Cet article explore en détail l'utilisation de surf, en fournissant des exemples concrets et des explications claires pour faciliter sa compréhension et son application.
Tracer le graphe d'une fonction
Utilisation de fplot pour les fonctions d'une variable
Pour tracer le graphe d'une fonction sur un intervalle donné, on peut utiliser la commande fplot. Cette commande est particulièrement utile lorsque la fonction est définie de manière analytique.
Par exemple, pour tracer une fonction entre -5 et 5 sur l'axe des ordonnées, la syntaxe générale est :
fplot(@(x) votre_fonction(x), [-5 5])Représentation de données discrètes avec plot
La fonction plot est utilisée pour représenter des données discrètes. Si vous avez des valeurs x et y (vecteurs x et y), la commande plot(x, y) affichera ces valeurs sous forme de points reliés par des lignes. Les arguments supplémentaires permettent de spécifier le type de trait, la couleur, et les marqueurs utilisés pour chaque point.
x = [1, 2, 3, 4, 5];y = [2, 4, 1, 3, 5];plot(x, y, '-o') % Relie les points par une ligne et ajoute des cercles à chaque pointPersonnalisation de l'affichage graphique
Ajout de titres et de labels
Il est essentiel de bien étiqueter les graphiques pour qu'ils soient compréhensibles. Voici comment ajouter des titres et des labels aux axes :
Lire aussi: Le cadre juridique du voile en France
title('Titre de la figure'): Donne un titre à la figure.xlabel('Légende de l'axe des abscisses'): Ajoute une légende sous l'axe des abscisses.ylabel('Légende de l'axe des ordonnées'): Ajoute une légende à l'axe des ordonnées.
Insertion de texte
La commande text permet d'insérer du texte directement sur la figure à l'aide de la souris.
text(x, y, 'Texte à insérer')où x et y sont les coordonnées où le texte doit être placé.
Pour insérer une variable au milieu d'un texte, on utilise la commande num2str. Par exemple :
valeur = 5;text(0.5, 0.5, ['La valeur est : ' num2str(valeur)])Gestion des fenêtres graphiques
figure: Crée une nouvelle fenêtre graphique ou active une fenêtre existante.close: Ferme la fenêtre graphique active.close all: Ferme toutes les fenêtres graphiques.
Superposition de graphiques
Pour afficher plusieurs graphiques sur une même figure, on utilise la commande hold on. Une fois que tous les graphiques sont tracés, on utilise hold off pour désactiver la superposition.
plot(x1, y1)hold onplot(x2, y2)hold offCréation de sous-fenêtres
La commande subplot permet de diviser la fenêtre graphique en plusieurs sous-fenêtres. La syntaxe est subplot(m, n, p), où m est le nombre de lignes, n le nombre de colonnes, et p l'indice de la sous-fenêtre active.
Lire aussi: Comment adapter sa voile au vent ?
subplot(2, 1, 1) % Première sous-fenêtre en hautplot(x1, y1)subplot(2, 1, 2) % Deuxième sous-fenêtre en basplot(x2, y2)La fonction surf en détail
Préparation des données
Pour utiliser surf, il faut préparer trois matrices : X, Y, et Z. X et Y représentent les coordonnées des points dans le plan, et Z représente les valeurs de la fonction à ces points. La seule contrainte est que le nombre de points soit le produit de deux entiers (m \times n). Si l'on a (m \times n) points, cela signifie que l'on a (m \times n) valeurs de (x), (m \times n) valeurs de (y) et (m \times n) valeurs de (z).
Considérons l'exemple de la surface définie par :
[z = y^2 - x^2]
dont on veut tracer la surface représentative sur ([-1, 1] \times [-2, 2]).
Création des matrices X et Y avec meshgrid
La fonction meshgrid est utilisée pour créer les matrices X et Y à partir de vecteurs x et y.
Lire aussi: Laïcité à l'hôpital : le cas du voile
x = linspace(-1, 1, 10); % Crée un vecteur de 10 points entre -1 et 1y = linspace(-2, 2, 15); % Crée un vecteur de 15 points entre -2 et 2[X, Y] = meshgrid(x, y); % Crée les matrices X et YDans cet exemple, x est un vecteur de 10 valeurs équidistantes entre -1 et 1, et y est un vecteur de 15 valeurs équidistantes entre -2 et 2. En combinant toutes ces valeurs de (x) et (y), on obtient (m \times n) points dans le plan ((x, y)).
Calcul de la matrice Z
Une fois les matrices X et Y créées, il faut calculer la matrice Z en appliquant la fonction à chaque point (x, y).
Z = Y.^2 - X.^2; % Calcule les valeurs de zUtilisation de la fonction surf
Maintenant que les matrices X, Y, et Z sont prêtes, on peut utiliser la fonction surf pour afficher la surface.
surf(X, Y, Z)Cela affichera la surface définie par l'équation (z = y^2 - x^2) sur le domaine ([-1, 1] \times [-2, 2]).
Personnalisation de la surface
La fonction surf offre plusieurs options de personnalisation. On peut modifier la palette de couleurs, ajouter une boîte autour de la surface, et ajuster l'angle de vision.
colormap: Modifie la palette de couleurs. Pour voir toutes les palettes disponibles, tapezhelp colormap.box on: Ajoute une boîte autour de la surface.
Contrôle de la vue
La commande view permet de contrôler l'angle de vision. On peut spécifier l'azimut et l'élévation.
view(az, el): Définit l'azimutazet l'élévationelen degrés. Les valeurs par défaut sont -37.5° pour l'azimut et 30° pour l'élévation.axis vis3d: Permet de tourner la figure 3D avec la souris.axis equal: Ajuste les axes pour que les unités soient égales dans toutes les directions.axis tight: Ajuste les limites des axes pour qu'elles correspondent aux données.
Exemples supplémentaires
Surface définie par une fonction utilisateur :
Si la surface est définie par une fonction utilisateur, il suffit de calculer les valeurs de
Zen utilisant cette fonction.function z = ma_fonction(x, y) z = x.^2 + y.^2;end[X, Y] = meshgrid(linspace(-5, 5, 50), linspace(-5, 5, 50));Z = ma_fonction(X, Y);surf(X, Y, Z)Modification des limites des axes :
Pour modifier les limites des axes, on utilise la commande
axis.axis([xmin xmax ymin ymax zmin zmax])Par exemple, pour définir les limites de la figure précédente, on utilise :
axis([-1 1 -2 2 -1 3])axis autorestaure les limites automatiques.axis equalimpose la même échelle sur tous les axes.axis tightajuste les limites aux données.axis vis3dpermet de tourner la figure en 3D avec la souris.
Sauvegarde des figures
Il est possible de sauvegarder la fenêtre graphique dans un fichier sous divers formats d'images. La commande print est utilisée pour cela.
print('nom_du_fichier', '-dpng') % Sauvegarde au format PNGLes formats disponibles sont nombreux, notamment PNG, JPEG, TIFF, et EPS.