Main Content

meshgrid

Zwei- und dreidimensionale Raster

Beschreibung

Beispiel

[X,Y] = meshgrid(x,y) gibt Koordinaten eines zweidimensionalen Rasters basierend auf den in den Vektoren x und y enthaltenen Koordinaten zurück. X ist eine Matrix, in der jede Zeile eine Kopie von x ist, während Y eine Matrix ist, in der jede Spalte eine Kopie von y ist. Das von den Koordinaten X und Y dargestellte Raster hat length(y) Zeilen und length(x) Spalten.

Beispiel

[X,Y] = meshgrid(x) ist dasselbe wie [X,Y] = meshgrid(x,x) und gibt Koordinaten für ein quadratisches Raster mit der Rastergröße length(x)xlength(x) zurück.

Beispiel

[X,Y,Z] = meshgrid(x,y,z)gibt Koordinaten für ein dreidimensionales Raster zurück, das durch die Vektoren x, y und z definiert ist. Das Raster, das durch X, Y und Z dargestellt wird, hat die Größe length(y)xlength(x)xlength(z).

Beispiel

[X,Y,Z] = meshgrid(x) ist dasselbe wie [X,Y,Z] = meshgrid(x,x,x) und gibt Koordinaten für ein dreidimensionales Raster mit der Rastergröße length(x)xlength(x)xlength(x) zurück.

Beispiele

alle reduzieren

Erstellen Sie Koordinaten für ein zweidimensionales Raster, wobei die x-Koordinaten durch den Vektor x und die y-Koordinaten durch den Vektor y definiert sind.

x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)
X = 5×3

     1     2     3
     1     2     3
     1     2     3
     1     2     3
     1     2     3

Y = 5×3

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5

Werten Sie den Ausdruck x2+y2 über das zweidimensionale Raster aus.

X.^2 + Y.^2
ans = 5×3

     2     5    10
     5     8    13
    10    13    18
    17    20    25
    26    29    34

Erstellen Sie ein zweidimensionales Raster mit gleichmäßig verteilten x-Koordinaten und y-Koordinaten im Intervall [-2,2].

x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);

Werten Sie die Funktion f(x,y)=xe-x2-y2 über dem zweidimensionalen Raster aus und plotten Sie sie.

F = X.*exp(-X.^2-Y.^2);
surf(X,Y,F)

Figure contains an axes object. The axes object contains an object of type surface.

In Releases ab R2016b ist es nicht immer erforderlich, das Raster zu erstellen, bevor die Operation über dem Raster ausgeführt wird. Beispielsweise werden beim Berechnen des Ausdrucks xe-x2-y2 die Vektoren x und y implizit erweitert. Weitere Informationen zur impliziten Erweiterung finden Sie unter Array vs. Matrix Operations.

surf(x,y,x.*exp(-x.^2-(y').^2))

Figure contains an axes object. The axes object contains an object of type surface.

Erstellen Sie Koordinaten für ein dreidimensionales Raster aus x-, y- und z-Koordinaten, die im Intervall [0,6] definiert sind, und werten Sie den Ausdruck x2+y2+z2 aus.

x = 0:2:6;
y = 0:1:6;
z = 0:3:6;
[X,Y,Z] = meshgrid(x,y,z);
F = X.^2 + Y.^2 + Z.^2;

Bestimmen Sie die Größe des Rasters. Die drei Koordinatenvektoren weisen unterschiedliche Längen auf und bilden eine rechteckige Box aus Rasterpunkten.

gridsize = size(F)
gridsize = 1×3

     7     4     3

Verwenden Sie die Syntax mit einer einzigen Eingabe, um ein dreidimensionales Raster mit gleichmäßigen Abständen basierend auf den in x definierten Koordinaten zu generieren. Das neue Raster bildet einen Kubus aus Rasterpunkten.

[X,Y,Z] = meshgrid(x);
G = X.^2 + Y.^2 + Z.^2;
gridsize = size(G)
gridsize = 1×3

     4     4     4

Eingabeargumente

alle reduzieren

x-Koordinaten von Punkten, angegeben als Vektor.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

y-Koordinaten von Punkten, angegeben als Vektor.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

z-Koordinaten von Punkten, angegeben als Vektor.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Ausgabeargumente

alle reduzieren

x-Koordinaten über ein Raster, zurückgegeben als zweidimensionales (zwei Eingaben) oder dreidimensionales (drei Eingaben) Array.

y-Koordinaten über ein Raster, zurückgegeben als zweidimensionales (zwei Eingaben) oder dreidimensionales (drei Eingaben) Array.

z-Koordinaten über ein Raster, zurückgegeben als dreidimensionales Array.

Mehr über

alle reduzieren

Konvertierung zwischen den Formaten meshgrid und ndgrid

Mit meshgrid und ndgrid werden Raster erstellt, die unterschiedliche Ausgabeformate verwenden. Im Vergleich zum anderen Rasterformat werden konkret die beiden ersten Dimensionen eines Rasters, die mithilfe einer dieser Funktionen erstellt wurden, vertauscht. Einige MATLAB®-Funktionen verwenden Raster im Format meshgrid, während andere das Format ndgrid verwenden. Daher ist es gängig, Raster zwischen diesen beiden Formaten zu konvertieren.

Sie können die Konvertierung zwischen diesen Rasterformaten vornehmen, indem Sie pagetranspose (ab R2020b) oder permute verwenden, um die beiden ersten Dimensionen der Raster-Arrays zu vertauschen. Erstellen Sie beispielsweise ein dreidimensionales Raster mit meshgrid.

[X,Y,Z] = meshgrid(1:4,1:3,1:2);

Transponieren Sie jetzt die beiden ersten Dimensionen jedes Raster-Arrays, um das Raster in das Format ndgrid zu konvertieren. Vergleichen Sie anschließend die Ergebnisse mit den Ausgaben von ndgrid.

Xt = pagetranspose(X);
Yt = pagetranspose(Y);
Zt = pagetranspose(Z);
[Xn,Yn,Zn] = ndgrid(1:4,1:3,1:2);
isequal(Xt,Xn) & isequal(Yt,Yn) & isequal(Zt,Zn)
ans =

  logical

   1

Die Verwendung von pagetranspose ist äquivalent zum Permutieren der ersten beiden Dimensionen, während andere Dimensionen unverändert bleiben. Sie können diese Operation auch mithilfe von permute(X,[2 1 3:ndims(X)]) ausführen.

Erweiterte Fähigkeiten

C/C++ Codegenerierung
Generieren Sie C und C++ Code mit MATLAB® Coder™.

GPU-Codegenerierung
Generieren von CUDA® Code für NVIDIA® Grafikprozessoren mit dem GPU Coder™.

Versionsverlauf

Eingeführt vor R2006a