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
Arrays para avaliação de função multidimensional em grid
Seqüência de Chamamento
[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)
Parâmetros
- x, y, z, ...
vetores
- X, Y, Z, ...
matrizes, no caso de 2 argumentos de entrada, ou hipermatrizes em outro caso
Descrição
Esta rotina utilitária é útil para criar arrays para a avaliação da
função em grids 2, 3, ..., n dimensionais. Por exemplo, em 2d, um grid é
definido por dois vetores, x
e y
de
comprimento nx e ny, e se deseja avaliar uma função (dita f) em todos os
pontos do grid, isto é, em todos os pontos de coordenadas (x(i),y(j)) com
i=1,..,nx e j=1,..,ny . Neste caso, esta função pode computar as duas
matrizes X,Y
de tamanho nx x ny tais que :
X(i,j) = x(i) para todo i em [1,nx] Y(i,j) = y(j) e j em [1,ny]
e a avaliação pode ser feita com Z=f(X,Y)
(sob a
condição de que f
foi codificada para a avaliação em
argumentos de vetor, que é feito (em geral) usando os operadores elemento
a elemento .*
, ./
and
.^
no lugar de *
,
/
e ^
).
No caso 3d, considerando 3 vetores x,y,z
de
comprimentos nx, ny e nz, X,Y,Z
são 3 hipermatrizes de
tamanho nx x ny x nz tais que :
X(i,j,k) = x(i) Y(i,j,k) = y(j) para todo (i,j,k) in [1,nx]x[1,ny]x[1,nz] Z(i,j,k) = z(k)
No caso geral de m argumentos de entrada x1, x2, ..,
xm
, os m argumentos de saída X1, X2, .., Xm
são hipermatrizes de tamanho nx1 x nx2 x ... x nxm e
:
Xj(i1,i2,...,ij,...,im) = xj(ij) for all (i1,i2,...,im) in [1,nx1]x[1,nx2]x...x[1,nxm]
Exemplos
// criando um grid 2d simples nx = 40; ny = 40; x = linspace(-1,1,nx); y = linspace(-1,1,ny); [X,Y] = ndgrid(x,y); // computando uma função no grid e plotando //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]); show_window() // criando um grid 3d simples 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); // tente exibir este grid 3d... 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()
Ver Também
- kron — produto de Kronecker (.*.)
Autor
B. Pincon
<< meshgrid | Elementary matrices | ones >> |