* Bug #8431: eval3d() set obsolete
[scilab.git] / scilab / modules / elementary_functions / help / ja_JP / 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:ns5="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="ja">
4
5 <refnamediv>
6     
7     <refname>ndgrid</refname>
8     
9     <refpurpose>与えられたベクトルを複製することによって、行列またはN次元配列を作成
10         
11     </refpurpose>
12     
13 </refnamediv>
14
15 <refsynopsisdiv>
16     
17     <title>呼び出し手順</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>引数</title>
34     
35     <variablelist>
36         
37         <varlistentry>
38             
39             <term>x, y, z, ...</term>
40             
41             <listitem>
42                 
43                 <para>vectors of any data types. They may have distinct data types.</para>
44                 
45             </listitem>
46             
47         </varlistentry>
48         
49         <varlistentry>
50             
51             <term>X, Y, Z, ...</term>
52             
53                 <listitem>
54                     <para>Matrices in case of 2 input arguments, or hypermatrices otherwise.
55                         
56                         They all have the same sizes: size(x,"*") rows, size(y,"*") columns,
57                         
58                         size(z,"*") layers, etc.
59                   </para>
60                   <para>
61                         
62                         They have the datatypes of respective input vectors:
63                         
64                         <literal>typeof(X)==typeof(x)</literal>,
65                         
66                         <literal>typeof(Y)==typeof(y)</literal>, etc.
67                         
68                     </para>
69                     
70                 </listitem>
71         </varlistentry>
72         
73     </variablelist>
74     
75 </refsection>
76
77 <refsection role="description">
78     
79     <title>説明</title>
80     
81     <para>
82         The first application of <function>ndgrid</function> is to build
83         
84         a grid of nodes meshing the 2D or 3D or N-D space according to 2, 3,
85         
86         or more sets
87         
88         <literal>x</literal>, <literal> y</literal>, etc.. of
89         
90         "template" coordinates sampled along each direction/dimension of the
91         
92         space that you want to mesh.
93         
94     </para>
95     
96     <para>
97         Hence, the matrix or hypermatrix <literal>X</literal> is made
98         
99         by replicating the vector <literal>x</literal> as all its columns;
100         
101         the matrix or hypermatrix <literal>Y</literal> is made
102         
103         by replicating the vector <literal>y</literal> as all its rows;
104         
105         <literal>Z</literal> is made of replicating the vector
106         
107         <literal>z</literal> along all its local thicknesses (3rd dimension);
108         
109         etc
110         
111     </para>
112     
113     <screen>
114         
115         <![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])
116  X  =
117    1.   1.   1.   1.
118    3.   3.   3.   3.
119    4.   4.   4.   4.
120
121    Y  =
122    0.   2.   4.   6.
123    0.   2.   4.   6.
124    0.   2.   4.   6.
125 ]]>
126     </screen>
127     
128     <para>
129         
130         Then, the coordinates of the node(i,j) in the 2D space
131         
132         will be
133         
134         simply <literal>[x(i), y(j)]</literal> equal to
135         
136         <literal>[X(i,j), Y(i,j)]</literal>. As well, the coordinates of a
137         
138         <literal>node(i,j,k)</literal> of a 3D grid will be
139         
140         <literal>[x(i), y(j), z(k)]</literal> equal to
141         
142         <literal>[X(i,j,k), Y(i,j,k), Z(i,j,k)]</literal>.
143         
144     </para>
145     
146     <para>
147         
148         This replication scheme can be generalized to any number of dimensions,
149         
150         as well to any type of uniform data. Let's for instance consider 2
151         
152         attributes:
153         
154         <orderedlist>
155             
156             <listitem>The first is a number, to be chosen from the vector say
157                 
158                 <literal>n = [ 3 7 ]</literal>
159                 
160             </listitem>
161             
162             <listitem>The second is a letter, to be chosen from the vector
163                 
164                 say <literal>c = ["a" "e" "i" "o" "u" "y"]</literal>
165                 
166             </listitem>
167             
168         </orderedlist>
169         
170         Then we want to build the set of all {n,c} possible pairs. It will
171         
172         just be the 2D grid:
173         
174     </para>
175     
176     <screen>
177         
178         <![CDATA[--> [N, C] = ndgrid([3 7],["a" "e" "i" "o" "u" "y"])
179  C  = 
180 !a  e  i  o  u  y  !
181 !a  e  i  o  u  y  !
182
183  N  = 
184    3.   3.   3.   3.   3.   3.
185    7.   7.   7.   7.   7.   7.
186 ]]>
187     </screen>
188     
189     <para>Then, the object(i,j) will have the properties
190         
191         <literal>{n(i) c(j)}</literal> that now can be addressed with
192         
193         <literal>{N(i,j) C(i,j)}</literal>.
194         
195         This kind of grid may be useful to initialize an array of structures.
196         
197     </para>
198     
199     <para>
200         Following examples show how to use <varname>X, Y, Z</varname> in
201         
202         most frequent applications.
203         
204     </para>
205      
206     
207 </refsection>
208
209 <refsection role="examples">
210     
211     <title>例</title>
212     
213     
214     
215     <para>
216         <emphasis role="bold">Example #1:</emphasis>
217     </para>
218     
219     <programlisting role="example"><![CDATA[
220 // Create a simple 2d grid
221 x = linspace(-10,2,40);
222 y = linspace(-5,5,40);
223 [X,Y] = ndgrid(x,y);
224
225 // Compute ordinates Z(X,Y) on the {X, Y} grid and plot Z(X,Y)
226 Z = X - 3*X.*sin(X).*cos(Y-4) ;
227 clf()
228 plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
229  ]]></programlisting>
230     
231     <scilab:image>
232         
233         x = linspace(-10,2,40);
234         
235         y = linspace(-5,5,40);
236         
237         [X,Y] = ndgrid(x,y);
238         
239         Z = X - 3*X.*sin(X).*cos(Y-4) ;
240         
241         clf()
242         
243         plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
244         
245     </scilab:image>
246     
247     
248     
249     <para>
250         <emphasis role="bold">Example #2:</emphasis>
251     </para>
252     
253     <programlisting role="example"><![CDATA[
254 // 簡単な3次元グリッドを作成
255 nx = 10; ny = 6; nz = 4;
256 x = linspace(0,2,nx);
257 y = linspace(0,1,ny);
258 z = linspace(0,0.5,nz);
259 [X,Y,Z] = ndgrid(x,y,z);
260 // 3次元グリッドを表示する ...
261 XF=[]; YF=[]; ZF=[];
262 for k=1:nz
263    [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
264    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
265 end
266 for j=1:ny
267    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
268                      matrix(Y(:,j,:),[nx,nz]),...
269                      matrix(Z(:,j,:),[nx,nz]));
270    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
271 end
272 clf()
273 plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
274 xtitle("A 3d grid !"); show_window()
275  ]]></programlisting>
276     
277     <scilab:image>
278         
279         nx = 10; ny = 6; nz = 4;
280         
281         x = linspace(0,2,nx);
282         
283         y = linspace(0,1,ny);
284         
285         z = linspace(0,0.5,nz);
286         
287         [X,Y,Z] = ndgrid(x,y,z);
288         
289         XF=[]; YF=[]; ZF=[];
290         
291         for k=1:nz
292         
293         [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
294         
295         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
296         
297         end
298         
299         for j=1:ny
300         
301         [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
302         
303         matrix(Y(:,j,:),[nx,nz]),...
304         
305         matrix(Z(:,j,:),[nx,nz]));
306         
307         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
308         
309         end
310         
311         plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
312         
313         xtitle("A 3d grid !");
314         
315     </scilab:image>
316     
317     <para>
318         <emphasis role="bold">Example #3: Create a table of digrams:</emphasis>
319     </para>
320     
321     <programlisting role="example"><![CDATA[
322 [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
323 c1+c2
324  ]]></programlisting>
325     
326     <screen>
327         
328         <![CDATA[--> [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
329  c2  =
330 !a  b  c  d  e  f  g  h  !
331 !a  b  c  d  e  f  g  h  !
332 !a  b  c  d  e  f  g  h  !
333
334  c1  =
335 !a  a  a  a  a  a  a  a  !
336 !b  b  b  b  b  b  b  b  !
337 !c  c  c  c  c  c  c  c  !
338
339 --> c1+c2
340  ans  =
341 !aa  ab  ac  ad  ae  af  ag  ah  !
342 !ba  bb  bc  bd  be  bf  bg  bh  !
343 !ca  cb  cc  cd  ce  cf  cg  ch  !
344 ]]>
345     </screen>
346     
347 </refsection>
348
349 <refsection role="see also">
350     
351     <title>参照</title>
352     
353     <simplelist type="inline">
354         
355         <member>
356             
357             <link linkend="meshgrid">meshgrid</link>
358             
359         </member>
360         
361         <member>
362             
363             <link linkend="kron">kron</link>
364             
365         </member>
366         
367         <member>
368             
369             <link linkend="feval">feval</link>
370             
371         </member>
372         
373         <member>
374             
375             <link linkend="nf3d">nf3d</link>
376             
377         </member>
378         
379     </simplelist>
380     
381 </refsection>
382
383 <refsection role="history">
384     
385     <title>履歴</title>
386     
387     <revhistory>
388         
389         <revision>
390             
391             <revnumber>6.0</revnumber>
392             
393             <revdescription>Extension to all homogeneous datatypes ([], booleans, encoded integers, polynomials, rationals, strings). Revision of the help page.
394                 
395             </revdescription>
396             
397         </revision>
398         
399     </revhistory>
400     
401 </refsection>
402
403 </refentry>