Main Content

meshgrid

2 次元および 3 次元のグリッド

説明

[X,Y] = meshgrid(x,y) はベクトル x および y に含まれる座標に基づいて 2 次元のグリッド座標を返します。X は各行が x のコピーである行列、Y は各列が y のコピーである行列です。座標 X および Y によって表されるグリッドには length(y) 個の行と length(x) 個の列が含まれます。

[X,Y] = meshgrid(x)[X,Y] = meshgrid(x,x) と同じであり、グリッド サイズが length(x)length(x) 列の正方形グリッド座標を返します。

[X,Y,Z] = meshgrid(x,y,z) はベクトル xy および z によって定義される 3 次元グリッド座標を返します。XY および Z によって表されるグリッドのサイズは length(y) x length(x) x length(z) です。

[X,Y,Z] = meshgrid(x)[X,Y,Z] = meshgrid(x,x,x) と同じであり、グリッド サイズが length(x) x length(x) x length(x) の 3 次元グリッド座標を返します。

すべて折りたたむ

ベクトル x によって定義された x 座標およびベクトル y によって定義された y 座標からなる 2 次元グリッド座標を作成します。

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

x2+y2 を 2 次元グリッド上で評価します。

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

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

等間隔の x 座標および y 座標からなる 2 次元グリッドを区間 [-2,2] で作成します。

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

関数 f(x,y)=xe-x2-y2 を 2 次元グリッド上で評価してプロットします。

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.

R2016b 以降では、グリッド上の操作を行う前にグリッドを必ず作成する必要はありません。たとえば、式 xe-x2-y2 を計算すると、ベクトル xy が暗黙的に拡張されます。暗黙的な拡張に関する詳細については、配列と行列の演算を参照してください。

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

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

xy および z 座標から 3 次元グリッド座標を区間 [0,6] で作成し、式 x2+y2+z2 を評価します。

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;

グリッドのサイズを決定します。3 つの座標ベクトルの長さが異なるため、グリッド点の直方体が形成されます。

gridsize = size(F)
gridsize = 1×3

     7     4     3

単入力構文を使用して、x で定義された座標に基づく一定間隔の 3 次元グリッドを生成します。新しいグリッドはグリッド点の立方体を形成します。

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

     4     4     4

入力引数

すべて折りたたむ

点の x 座標。ベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

点の y 座標。ベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

点の z 座標。ベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

グリッド上の x 座標。2 次元配列 (2 つの入力) または 3 次元配列 (3 つの入力) として返されます。

グリッド上の y 座標。2 次元配列 (2 つの入力) または 3 次元配列 (3 つの入力) として返されます。

グリッド上の z 座標。3 次元配列として返されます。

詳細

すべて折りたたむ

meshgridndgrid の形式の変換

meshgridndgrid は異なる出力形式を使用してグリッドを作成します。具体的には、これらの関数の一方を使用して作成されたグリッドをもう一方のグリッド形式と比較すると、最初の 2 つの次元が入れ替わっています。MATLAB® 関数には meshgrid の形式のグリッドを使用する関数も ndgrid の形式を使用する関数もあるため、2 つの形式の間でグリッドを変換することがよくあります。

これらのグリッド形式は、pagetranspose (R2020b 以降) または permute を使用してグリッド配列の最初の 2 つの次元を入れ替えることで変換できます。たとえば、meshgrid で 3 次元グリッドを作成します。

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

次に、各グリッド配列の最初の 2 つの次元を転置してグリッドを ndgrid の形式に変換し、結果を 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

pagetranspose の使用は、他の次元はそのままで最初の 2 つの次元を並べ替えるのと同じです。この操作は permute(X,[2 1 3:ndims(X)]) を使用して実行することもできます。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入