Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
ndgrid
多次元関数評価用グリッドの配列
呼び出し手順
[X, Y] = ndgrid(x,y) [X, Y, Z] = ndgrid(x,y,z) [X, Y, Z, T] = ndgrid(x,y,z,t) [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)
引数
- x, y, z, ...
ベクトル
- X, Y, Z, ...
入力引数が2個の場合は行列, それ以外の場合はハイパー行列
説明
この関数はユーティリティルーチンで,
2, 3, ..., n次元のグリッド上で関数の評価を行う
ための配列を作成する際に便利です.
例えば, 2次元の場合, グリッドは
長さ nx および nyの
2つのベクトル
x
および y
で定義され,
i=1,..,nx および j=1,..,ny
として,座標(x(i),y(j))となります.
そのグリッド上で (例えばfのような)関数の評価を
行うことになります.
この場合,この関数は,以下のような大きさnx x nyの
2つの行列X,Y
を計算します :
X(i,j) = x(i) for all i in [1,nx] Y(i,j) = y(j) and j in [1,ny]
評価は,Z=f(X,Y)
で行うことができます.
(ベクトル引数でf
を評価するようコードが
作成されている場合,
*
,
/
および ^
の部分に
要素毎の演算 .*
, ./
および
.^
を使用することにより,(一般に)動作します..
3次元の場合, 長さ nx, ny および nzの3個のベクトルx,y,z
を指定し,
X,Y,Z
は以下のように大きさ
nx x ny x nzのハイパー行列となります :
X(i,j,k) = x(i) Y(i,j,k) = y(j) for all (i,j,k) in [1,nx]x[1,ny]x[1,nz] Z(i,j,k) = z(k)
一般的な場合, m 個の入力引数x1, x2, ..,
xm
,それから m個の出力引数
X1, X2, .., Xm
は以下のような
大きさ nx1 x nx2 x ... x
nxm
のハイパー行列となります :
Xj(i1,i2,...,ij,...,im) = xj(ij) for all (i1,i2,...,im) in [1,nx1]x[1,nx2]x...x[1,nxm]
例
// 簡単な2次元グリッドを作 nx = 40; ny = 40; x = linspace(-1,1,nx); y = linspace(-1,1,ny); [X,Y] = ndgrid(x,y); // グリッド上で関数を計算してプロット //deff("z=f(x,y)","z=128*x.^2 .*(1-x).^2 .*y.^2 .*(1-y).^2"); deff("z=f(x,y)","z=x.^2 + y.^3") Z = f(X,Y); clf() plot3d(x,y,Z, flag=[2 6 4]); xselect()
// 簡単な3次元グリッドを作成 nx = 10; ny = 6; nz = 4; x = linspace(0,2,nx); y = linspace(0,1,ny); z = linspace(0,0.5,nz); [X,Y,Z] = ndgrid(x,y,z); // 3次元グリッドを表示する ... XF=[]; YF=[]; ZF=[]; for k=1:nz [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k)); XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf]; end for j=1:ny [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),... matrix(Y(:,j,:),[nx,nz]),... matrix(Z(:,j,:),[nx,nz])); XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf]; end clf() plot3d(XF,YF,ZF, flag=[0 6 3], leg="X@Y@Z") xtitle("A 3d grid !"); show_window()
参照
- kron — クロネッカー積 (.*.)
Report an issue | ||
<< meshgrid | elementarymatrices | ones >> |