HOWTO · MATLAB
Die meshgrid()-Funktion in MATLAB
Erfahren Sie, wie meshgrid() in MATLAB Koordinatenvektoren in Matrizen abbildet, werten Sie eine Funktion über einem 2-D-Gitter aus und visualisieren Sie das Ergebnis mit surf().
Auf dieser Seite
meshgrid() in MATLAB verwandelt Koordinatenvektoren in Koordinatenmatrizen, sodass Sie eine Funktion an jedem Punkt eines 2-D-Gitters auswerten und die resultierenden Werte darstellen können. Das folgende Beispiel verwendet unterschiedlich viele x- und y-Koordinaten, damit die Ausrichtung der Matrix deutlich wird.
Verstehen, wie meshgrid() Koordinaten abbildet
Rufen Sie meshgrid(x, y) mit kleingeschriebenen Eingabevektoren auf. Es gibt die großgeschriebenen Matrizen X und Y zurück: Jede Zeile von X wiederholt die x-Koordinaten, während jede Spalte von Y eine y-Koordinate wiederholt. Die Zeilen entsprechen Werten aus y, und die Spalten entsprechen Werten aus x.
Zum Beispiel hat x = 1:4 vier Werte und y = 1:6 hat sechs. Die resultierenden Matrizen X und Y haben jeweils sechs Zeilen und vier Spalten. Es ist nützlich, sich diese Ausrichtung zu merken, wenn Sie ein Gitter prüfen oder es einer Matrix von Funktionswerten zuordnen.
Ein 2-D-Koordinatengitter erstellen
Dieses eigenständige, Octave-kompatible Beispiel erstellt ein nicht quadratisches Gitter, wertet eine Funktion an jedem Koordinatenpaar aus und zeichnet die resultierende Oberfläche. Es gibt eine kompakte Ansicht des Koordinatenmusters und der Matrixgröße aus.
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);
Die erste ausgegebene Zeile zeigt, dass X in jeder Zeile 1 2 3 4 wiederholt. Die erste Spalte von Y zeigt die y-Koordinaten von 1 bis 6, wobei jeder Wert über seine Zeile wiederholt wird. So ergibt jedes Paar X(i,j) und Y(i,j) ein Koordinatenpaar, und Z(i,j) speichert den Funktionswert an diesem Punkt. Der Operator .^ quadriert jedes Matrixelement; eine gewöhnliche Matrixpotenz würde diese elementweise Berechnung nicht ausdrücken.
X(1,:) = 1 2 3 4
Y(:,1) = 1 2 3 4 5 6
size(Z) = 6 4
Eine Funktion über dem Gitter auswerten und darstellen
Das Beispiel berechnet Z = X.^2 + Y.^2 aus den Koordinatenmatrizen und übergibt dann X, Y und Z an surf(). Für diesen Arbeitsablauf muss Z dieselbe Anzahl von Zeilen und Spalten haben wie X und Y, damit jede dargestellte Höhe einem Koordinatenpaar entspricht. Wenn Sie einen der Eingabevektoren ändern, ändert meshgrid() die Gitterdimensionen und der elementweise Ausdruck berechnet passende Werte.
Für eine Ansicht der Funktionsebenen von oben kann MATLABs contour(X, Y, Z) dieselben Matrizen anstelle von surf() verwenden. Es visualisiert Kurven gleicher Werte; es ist ein alternativer Darstellungsaufruf, kein zusätzliches ausgeführtes Beispiel an dieser Stelle.
Ein 3-D-Koordinatengitter erstellen
Ein dreidimensionales Koordinatengitter ist nützlich, wenn eine Funktion von drei räumlichen Koordinaten abhängt, etwa eine Größe, die in einem ganzen Volumen ausgewertet wird. Dieser Artikel behandelt den Arbeitsablauf mit zwei Vektoren meshgrid(x, y) und legt weder die Aufrufsyntax für drei Dimensionen noch die Ausgabedimensionen fest. Ziehen Sie die Dokumentation für die von Ihnen verwendete MATLAB-Version zu Rate, bevor Sie den Ansatz an eine dritte Koordinate anpassen.