5fa06e838fbea25032a56c95863a1abb4eb96145
[scilab.git] / scilab / modules / elementary_functions / help / pt_BR / elementarymatrices / ndgrid.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="ndgrid" xml:lang="pt">
4
5 <refnamediv>
6     
7     <refname>ndgrid</refname>
8     
9     <refpurpose>constrói matrizes ou matrizes N-D, replicando alguns vetores dadas
10         
11     </refpurpose>
12     
13 </refnamediv>
14
15 <refsynopsisdiv>
16     
17     <title>Seqüência de Chamamento</title>
18     
19     <synopsis>[X, Y] = ndgrid(x,y)
20         
21         [X, Y, Z] = ndgrid(x,y,z)
22         
23         [X, Y, Z, T] = ndgrid(x,y,z,t)
24         
25         [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)
26         
27     </synopsis>
28     
29 </refsynopsisdiv>
30
31 <refsection role="arguments">
32     
33     <title>Parâmetros</title>
34     
35     <variablelist>
36         
37         <varlistentry>
38             
39             <term>x, y, z, ...</term>
40             
41             <listitem>
42                 
43                 <para>vetores de quaisquer tipos de dados.
44                     
45                     Eles podem ter tipos de dados distintos.
46                 </para>
47                 
48             </listitem>
49             
50         </varlistentry>
51         
52         <varlistentry>
53             
54             <term>X, Y, Z, ...</term>
55             
56                 <listitem>
57                     
58                     <para>matrices in case of 2 input arguments, or hypermatrices otherwise.
59                         
60                         They all have the same sizes: size(x,"*") rows, size(x,"*") columns,
61                         
62                         size(z,"*") layers, etc.
63                         
64                         They have the datatypes of respective input vectors:
65                         
66                         <literal>typeof(X)==typeof(x)</literal>,
67                         
68                         <literal>typeof(Y)==typeof(y)</literal>, etc.
69                         
70                     </para>
71                     
72                 </listitem>
73             
74         </varlistentry>
75         
76     </variablelist>
77     
78 </refsection>
79
80 <refsection role="description">
81     
82     <title>Descrição</title>
83     
84     <para>
85         The first application of <function>ndgrid</function> is to build
86         
87         a grid of nodes meshing the 2D or 3D or N-D space according to 2, 3,
88         
89         or more sets
90         
91         <literal>x</literal>, <literal> y</literal>, etc.. of
92         
93         "template" coordinates sampled along each direction/dimension of the
94         
95         space that you want to mesh.
96         
97     </para>
98     
99     <para>
100         Hence, the matrix or hypermatrix <literal>X</literal> is made
101         
102         by replicating the vector <literal>x</literal> as all its columns;
103         
104         the matrix or hypermatrix <literal>Y</literal> is made
105         
106         by replicating the vector <literal>y</literal> as all its rows;
107         
108         <literal>Z</literal> is made of replicating the vector
109         
110         <literal>z</literal> along all its local thicknesses (3rd dimension);
111         
112         etc
113         
114     </para>
115     
116     <screen>
117         
118         <![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])
119  X  =
120    1.   1.   1.   1.
121    3.   3.   3.   3.
122    4.   4.   4.   4.
123
124    Y  =
125    0.   2.   4.   6.
126    0.   2.   4.   6.
127    0.   2.   4.   6.
128 ]]>
129     </screen>
130     
131     <para>
132         
133         Then, the coordinates of the node(i,j) in the 2D space
134         
135         will be
136         
137         simply <literal>[x(i), y(j)]</literal> equal to
138         
139         <literal>[X(i,j), Y(i,j)]</literal>. As well, the coordinates of a
140         
141         <literal>node(i,j,k)</literal> of a 3D grid will be
142         
143         <literal>[x(i), y(j), z(k)]</literal> equal to
144         
145         <literal>[X(i,j,k), Y(i,j,k), Z(i,j,k)]</literal>.
146         
147     </para>
148     
149     <para>
150         
151         This replication scheme can be generalized to any number of dimensions,
152         
153         as well to any type of uniform data. Let's for instance consider 2
154         
155         attributes:
156         
157         <orderedlist>
158             
159             <listitem>The first is a number, to be chosen from the vector say
160                 
161                 <literal>n = [ 3 7 ]</literal>
162                 
163             </listitem>
164             
165             <listitem>The second is a letter, to be chosen from the vector
166                 
167                 say <literal>c = ["a" "e" "i" "o" "u" "y"]</literal>
168                 
169             </listitem>
170             
171         </orderedlist>
172         
173         Then we want to build the set of all {n,c} possible pairs. It will
174         
175         just be the 2D grid:
176         
177     </para>
178     
179     <screen>
180         
181         <![CDATA[--> [N, C] = ndgrid([3 7],["a" "e" "i" "o" "u" "y"])
182  C  =
183 !a  e  i  o  u  y  !
184 !a  e  i  o  u  y  !
185
186  N  =
187    3.   3.   3.   3.   3.   3.
188    7.   7.   7.   7.   7.   7.
189 ]]>
190     </screen>
191     
192     <para>Then, the object(i,j) will have the properties
193         
194         <literal>{n(i) c(j)}</literal> that now can be addressed with
195         
196         <literal>{N(i,j) C(i,j)}</literal>.
197         
198         This kind of grid may be useful to initialize an array of structures.
199         
200     </para>
201     
202     <para>
203         Following examples show how to use <varname>X, Y, Z</varname> in
204         
205         most frequent applications.
206         
207     </para>
208      
209     
210 </refsection>
211
212 <refsection role="examples">
213     
214     <title>Exemplos </title>
215     
216     
217     
218     <para>
219         <emphasis role="bold">Example #1:</emphasis>
220     </para>
221     
222     <programlisting role="example"><![CDATA[
223 // Criando um grid 2d simples
224 x = linspace(-10,2,40);
225 y = linspace(-5,5,40);
226 [X,Y] = ndgrid(x,y);
227
228 // Compute ordinates Z(X,Y) on the {X, Y} grid and plot Z(X,Y)
229 Z = X - 3*X.*sin(X).*cos(Y-4) ;
230 clf()
231 plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
232  ]]></programlisting>
233     
234     <scilab:image>
235         
236         x = linspace(-10,2,40);
237         
238         y = linspace(-5,5,40);
239         
240         [X,Y] = ndgrid(x,y);
241         
242         Z = X - 3*X.*sin(X).*cos(Y-4) ;
243         
244         clf()
245         
246         plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
247         
248     </scilab:image>
249     
250     
251     
252     <para>
253         <emphasis role="bold">Example #2:</emphasis>
254     </para>
255     
256     <programlisting role="example"><![CDATA[
257 // criando um grid 3d simples
258 nx = 10; ny = 6; nz = 4;
259 x = linspace(0,2,nx);
260 y = linspace(0,1,ny);
261 z = linspace(0,0.5,nz);
262 [X,Y,Z] = ndgrid(x,y,z);
263 // tente exibir este grid 3d...
264 XF=[]; YF=[]; ZF=[];
265 for k=1:nz
266    [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
267    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
268 end
269 for j=1:ny
270    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
271                      matrix(Y(:,j,:),[nx,nz]),...
272                      matrix(Z(:,j,:),[nx,nz]));
273    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
274 end
275 clf()
276 plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
277 xtitle("A 3d grid !"); show_window()
278  ]]>    </programlisting>
279     
280     <scilab:image>
281         
282         nx = 10; ny = 6; nz = 4;
283         
284         x = linspace(0,2,nx);
285         
286         y = linspace(0,1,ny);
287         
288         z = linspace(0,0.5,nz);
289         
290         [X,Y,Z] = ndgrid(x,y,z);
291         
292         
293         
294         XF=[]; YF=[]; ZF=[];
295         
296         
297         
298         for k=1:nz
299         
300         [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
301         
302         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
303         
304         end
305         
306         
307         
308         for j=1:ny
309         
310         [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
311         
312         matrix(Y(:,j,:),[nx,nz]),...
313         
314         matrix(Z(:,j,:),[nx,nz]));
315         
316         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
317         
318         end
319         
320         plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
321         
322         xtitle("A 3d grid !");
323         
324     </scilab:image>
325     
326     
327     
328     <para>
329         <emphasis role="bold">Example #3: Create a table of digrams:</emphasis>
330     </para>
331     
332     <programlisting role="example"><![CDATA[
333 [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
334 c1+c2
335  ]]>    </programlisting>
336     
337     <screen>
338         
339         <![CDATA[--> [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
340  c2  =
341 !a  b  c  d  e  f  g  h  !
342 !a  b  c  d  e  f  g  h  !
343 !a  b  c  d  e  f  g  h  !
344
345  c1  =
346 !a  a  a  a  a  a  a  a  !
347 !b  b  b  b  b  b  b  b  !
348 !c  c  c  c  c  c  c  c  !
349
350 --> c1+c2
351  ans  =
352 !aa  ab  ac  ad  ae  af  ag  ah  !
353 !ba  bb  bc  bd  be  bf  bg  bh  !
354 !ca  cb  cc  cd  ce  cf  cg  ch  !
355 ]]>
356     </screen>
357     
358     
359     
360 </refsection>
361
362 <refsection role="see also">
363     
364     <title>Ver Também</title>
365     
366     <simplelist type="inline">
367         
368         <member>
369             
370             <link linkend="meshgrid">meshgrid</link>
371             
372         </member>
373         
374         <member>
375             
376             <link linkend="kron">kron</link>
377             
378         </member>
379         
380         <member>
381             
382             <link linkend="feval">feval</link>
383             
384         </member>
385         
386         <member>
387             
388             <link linkend="eval3d">eval3d</link>
389             
390         </member>
391         
392         <member>
393             
394             <link linkend="nf3d">nf3d</link>
395             
396         </member>
397         
398     </simplelist>
399     
400 </refsection>
401
402 <refsection role="history">
403     
404     <title>Histórico</title>
405     
406     <revhistory>
407         
408         <revision>
409             
410             <revnumber>6.0</revnumber>
411             
412             <revdescription>Extension to all homogeneous datatypes ([], booleans, encoded integers,
413               polynomials, rationals, strings). Revision of the help page.
414                 
415             </revdescription>
416             
417         </revision>
418         
419     </revhistory>
420     
421 </refsection>
422
423 </refentry>
424