Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Ajuda Scilab >> Funções Elementares > Elementary matrices > ndgrid

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

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu May 12 11:45:19 CEST 2011