Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ndgrid

N 次元空間での四角形のグリッド

説明

[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn) は、グリッド ベクトル x1,x2,...,xn を複製して、n 次元のフル グリッドを生成します。

[X1,X2,...,Xn] = ndgrid(xg) は、すべての次元に対して使用する 1 つのグリッド ベクトル xg を指定します。指定する出力引数の数により、出力の次元 n が決定されます。

すべて折りたたむ

ベクトル [1 3 5 7 9 11 13 15 17 19] および [2 4 6 8 10 12] から 2 次元グリッドを作成します。

[X,Y] = ndgrid(1:2:19,2:2:12)
X = 10×6

     1     1     1     1     1     1
     3     3     3     3     3     3
     5     5     5     5     5     5
     7     7     7     7     7     7
     9     9     9     9     9     9
    11    11    11    11    11    11
    13    13    13    13    13    13
    15    15    15    15    15    15
    17    17    17    17    17    17
    19    19    19    19    19    19

Y = 10×6

     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12

関数を評価およびプロット

x1e-x12-x22

をグリッド定義域

-2<x1<2 および -2<x2<2

この定義域で値のグリッドを作成します。

[X1,X2] = ndgrid(-2:.2:2);

この定義域で関数を評価します。

Z = X1 .* exp(-X1.^2 - X2.^2);

関数のメッシュ プロットを生成します。

mesh(X1,X2,Z)

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

R2016b 以降のリリースの場合、このタスクでは ndgrid を使用する必要はありません。代わりに、以下のコマンドによる暗黙的な拡張を使用してグリッドを作成することができます。

x = -2:.2:2;

Z1 = x.' .* exp(-(x.').^2 - x.^2);

2 次元グリッドを作成し、このグリッド上で関数値を計算します。割り当てられた値の間に内挿して、グリッドを調整します。

[-5,5] の範囲内で、(x,y) の粗いグリッドを作成します。

[X,Y] = ndgrid(-5:0.5:5);

グリッド上で関数値を計算し、この関数をプロットします。

f = sin(X.^2) * cos(Y.^2);
surf(X,Y,f)

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

調整されたグリッドを使用して点の間に内挿し、結果をプロットします。

[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)

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

入力引数

すべて折りたたむ

グリッド ベクトル。各次元のグリッド座標を含むベクトルとして指定します。グリッド ベクトルは暗黙的にグリッドを定義します。たとえば、2 次元の場合は次のようになります。

Grid vectors implicitly define a full grid

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
複素数のサポート: あり

すべての次元に使用するグリッド ベクトル。グリッド座標を含むベクトルとして指定します。ndgridxg を各次元のグリッド ベクトルとして使用します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
複素数のサポート: あり

出力引数

すべて折りたたむ

フル グリッド表現。個別の配列として返されます。出力配列 Xi のそれぞれについて、i 番目の次元にグリッド ベクトル xi のコピーが含まれます。

詳細

すべて折りたたむ

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++ コードを生成します。

バージョン履歴

R2006a より前に導入