- Scilab Online Help
- Elementary Functions
- Discrete mathematics
- Floating point
- Integer representation
- Trigonometry
- abs
- amell
- and
- &
- binomial
- bitand
- bitor
- bloc2exp
- bloc2ss
- cat
- cell2mat
- cellstr
- char
- cumprod
- cumsum
- delip
- diag
- diff
- dsearch
- exp
- eye
- flipdim
- gsort
- imag
- imult
- ind2sub
- intersect
- inttrap
- isdef
- isempty
- isequal
- isequalbitwise
- isreal
- isvector
- kron
- lex_sort
- linspace
- log
- log10
- log1p
- log2
- logm
- logspace
- lstsize
- max
- maxi
- meshgrid
- min
- mini
- modulo
- ndgrid
- ndims
- nextpow2
- norm
- ones
- or
- |
- pen2ea
- permute
- pertrans
- prod
- rand
- real
- resize_matrix
- setdiff
- sign
- signm
- size
- solve
- sort
- sqrt
- sqrtm
- squarewave
- ssrand
- sub2ind
- sum
- sysconv
- sysdiag
- syslin
- toeplitz
- trfmod
- trianfml
- tril
- trisolve
- triu
- typeof
- union
- unique
- vectorfind
- zeros
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() // create a simple 3d grid 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 !"); xselect()
参照
作者
B. Pincon
<< modulo | Elementary Functions | ndims >> |