HOWTO · MATLAB
La fonction meshgrid() dans MATLAB
Découvrez comment meshgrid() dans MATLAB transforme des vecteurs de coordonnées en matrices, évaluez une fonction sur une grille 2-D et visualisez le résultat avec surf().
Sur cette page
meshgrid() dans MATLAB transforme des vecteurs de coordonnées en matrices de coordonnées, ce qui vous permet d’évaluer une fonction en chaque point d’une grille 2-D et de représenter les valeurs obtenues. L’exemple ci-dessous utilise des nombres différents de coordonnées x et y pour rendre l’orientation de la matrice claire.
Comprendre comment meshgrid() assigne les coordonnées
Appelez meshgrid(x, y) avec des vecteurs d’entrée en minuscules. Il renvoie les matrices en majuscules X et Y : chaque ligne de X répète les coordonnées x, tandis que chaque colonne de Y répète une coordonnée y. Les lignes correspondent à des valeurs de y, et les colonnes correspondent à des valeurs de x.
Par exemple, x = 1:4 a quatre valeurs et y = 1:6 en a six. Les matrices résultantes X et Y ont chacune six lignes et quatre colonnes. Il est utile de retenir cette orientation lorsque vous vérifiez une grille ou que vous la faites correspondre à une matrice de valeurs de fonction.
Créer une grille de coordonnées 2-D
Cet exemple autonome et compatible avec Octave crée une grille non carrée, évalue une fonction en chaque paire de coordonnées et dessine la surface obtenue. Il imprime une vue compacte du motif de coordonnées et de la taille de la matrice.
warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
x = 1:4;
y = 1:6;
[X, Y] = meshgrid(x, y);
Z = X.^2 + Y.^2;
fprintf('X(1,:) =');
fprintf(' %g', X(1,:));
fprintf('\nY(:,1) =');
fprintf(' %g', Y(:,1));
fprintf('\nsize(Z) = %d %d\n', size(Z));
surf(X, Y, Z);
La première ligne imprimée montre que X répète 1 2 3 4 sur chaque ligne. La première colonne de Y montre les coordonnées y de 1 à 6, chaque valeur étant répétée sur sa ligne. Ainsi, chaque paire X(i,j) et Y(i,j) donne une paire de coordonnées, et Z(i,j) stocke la valeur de la fonction en ce point. L’opérateur .^ élève chaque élément de la matrice au carré ; une puissance matricielle ordinaire n’exprimerait pas ce calcul élément par élément.
X(1,:) = 1 2 3 4
Y(:,1) = 1 2 3 4 5 6
size(Z) = 6 4
Évaluer et représenter une fonction sur la grille
L’exemple calcule Z = X.^2 + Y.^2 à partir des matrices de coordonnées, puis passe X, Y et Z à surf(). Pour ce flux de travail, Z doit avoir le même nombre de lignes et de colonnes que X et Y, afin que chaque hauteur représentée corresponde à une paire de coordonnées. Si vous modifiez l’un des vecteurs d’entrée, meshgrid() modifie les dimensions de la grille et l’expression élément par élément calcule des valeurs correspondantes.
Pour une vue de dessus des niveaux de la fonction, contour(X, Y, Z) de MATLAB peut utiliser les mêmes matrices au lieu de surf(). Il visualise des courbes de valeurs égales ; il s’agit d’un appel de représentation alternatif, et non d’un exemple exécuté supplémentaire ici.
Créer une grille de coordonnées 3-D
Une grille de coordonnées tridimensionnelle est utile lorsqu’une fonction dépend de trois coordonnées spatiales, comme une grandeur évaluée dans tout un volume. Cet article couvre le flux de travail à deux vecteurs meshgrid(x, y) et ne spécifie ni la syntaxe d’appel tridimensionnelle ni les dimensions de sortie. Consultez la documentation de la version de MATLAB que vous utilisez avant d’adapter l’approche à une troisième coordonnée.