* Bug #14025 fixed - Extend ndgrid() to any homogeneous data type
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / ndgrid.xml
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <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="ru">\r
3     <refnamediv>\r
4         <refname>ndgrid</refname>\r
5         <refpurpose>строит матриц или N-мерные массивы путем репликации данных векторов\r
6         </refpurpose>\r
7     </refnamediv>\r
8     <refsynopsisdiv>\r
9         <title>Последовательность вызова</title>\r
10         <synopsis>\r
11             X, Y] = ndgrid(x,y)\r
12             [X, Y, Z] = ndgrid(x,y,z)\r
13             [X, Y, Z, T] = ndgrid(x,y,z,t)\r
14             [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)\r
15         </synopsis>\r
16     </refsynopsisdiv>\r
17     <refsection role="arguments">\r
18         <title>Аргументы</title>\r
19         <variablelist>\r
20             <varlistentry>\r
21                 <term>x, y, z, ...</term>\r
22                 <listitem>\r
23                     <para>векторы любых типов данных. Они могут иметь различные типы данных.</para>\r
24                 </listitem>\r
25             </varlistentry>\r
26             <varlistentry>\r
27                 <term>X, Y, Z, ...</term>\r
28                 <listitem>\r
29                     <para>\r
30                         в случае двух входных аргументов - матрицы, в противном случае - гиперматрицы\r
31                     </para>\r
32                 </listitem>\r
33             </varlistentry>\r
34         </variablelist>\r
35     </refsection>\r
36     <refsection role="description">\r
37         <title>Описание</title>\r
38         <para>The first application of <function>ndgrid</function> is to build\r
39             a grid of nodes meshing the 2D or 3D or N-D space according to 2, 3,\r
40             or more sets\r
41             <literal>x</literal>, <literal> y</literal>, etc.. of  \r
42             "template" coordinates sampled along each direction/dimension of the\r
43             space that you want to mesh.\r
44         </para>\r
45         <para>Hence, the matrix or hypermatrix <literal>X</literal> is made\r
46             by replicating the vector <literal>x</literal> as all its columns ; \r
47             the matrix or hypermatrix <literal>Y</literal> is made\r
48             by replicating the vector <literal>y</literal> as all its rows ;\r
49             <literal>Z</literal> is made of replicating the vector \r
50             <literal>z</literal> along all its local thicknesses (3rd dimension); \r
51             etc\r
52         </para>\r
53         <screen>\r
54 <![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])\r
55  X  = \r
56    1.   1.   1.   1.\r
57    3.   3.   3.   3.\r
58    4.   4.   4.   4.\r
59 \r
60    Y  = \r
61    0.   2.   4.   6.\r
62    0.   2.   4.   6.\r
63    0.   2.   4.   6.\r
64 ]]></screen>\r
65         <para>\r
66             This replication scheme can be generalized to any number of dimensions,\r
67             as well to any type of uniform data. Let's for instance consider 2\r
68             attributes:\r
69             <orderedlist>\r
70                 <listitem>The first is a number, to be chosen from the vector say\r
71                 <literal>n = [ 3 7 ]</literal>\r
72                 </listitem>\r
73                 <listitem>The second is a letter, to be chosen from the vector \r
74                 say <literal>c = ["a" "e" "i" "o" "u" "y"]</literal>\r
75                 </listitem>\r
76             </orderedlist>\r
77             Then we want to build the set of all {n,c} possible pairs. It will\r
78             just be the 2D grid:\r
79         </para>\r
80         <screen>\r
81 <![CDATA[--> [N, C] = ndgrid([3 7],["a" "e" "i" "o" "u" "y"])\r
82  C  = \r
83 !a  e  i  o  u  y  !\r
84 !a  e  i  o  u  y  !\r
85 \r
86  N  = \r
87    3.   3.   3.   3.   3.   3.\r
88    7.   7.   7.   7.   7.   7.\r
89 ]]></screen>\r
90         <para>Then, the object(i,j) will have the properties \r
91         <literal>{n(i) c(j)}</literal> that now can be addressed with\r
92         <literal>{N(i,j) C(i,j)}</literal>.\r
93         This kind of grid may be useful to initialize an array of structures.\r
94         </para>\r
95         <para>Following examples show how to use <varname>X, Y, Z</varname> in\r
96         most frequent applications.\r
97         </para> \r
98     </refsection>\r
99     <refsection role="examples">\r
100         <title>Примеры</title>\r
101 \r
102         <para><emphasis role="bold">Example #1:</emphasis> </para>\r
103         <programlisting role="example"><![CDATA[  \r
104 // создание простой двухмерной координатной сетки\r
105 x = linspace(-10,2,40);\r
106 y = linspace(-5,5,40);\r
107 [X,Y] = ndgrid(x,y);\r
108 \r
109 // Compute ordinates Z(X,Y) on the {X, Y} grid and plot Z(X,Y)\r
110 Z = X - 3*X.*sin(X).*cos(Y-4) ;\r
111 clf()\r
112 plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()\r
113  ]]>    </programlisting>\r
114         <scilab:image>\r
115         x = linspace(-10,2,40);\r
116         y = linspace(-5,5,40);\r
117         [X,Y] = ndgrid(x,y);\r
118         Z = X - 3*X.*sin(X).*cos(Y-4) ;\r
119         clf()\r
120         plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()\r
121         </scilab:image>\r
122 \r
123         <para><emphasis role="bold">Example #2:</emphasis> </para>\r
124         <programlisting role="example"><![CDATA[  \r
125 // создание простой трёхмерной координатной сетки\r
126 nx = 10; ny = 6; nz = 4;\r
127 x = linspace(0,2,nx);\r
128 y = linspace(0,1,ny);\r
129 z = linspace(0,0.5,nz);\r
130 [X,Y,Z] = ndgrid(x,y,z);\r
131  \r
132 // попытаемся отобразить эту трёхмерную координатную сетку ...\r
133 XF=[]; YF=[]; ZF=[];\r
134  \r
135 for k=1:nz\r
136    [xf,yf,zf] = nf3d(X(:,:,k), Y(:,:,k), Z(:,:,k));\r
137    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];\r
138 end\r
139  \r
140 for j=1:ny\r
141    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),..\r
142                      matrix(Y(:,j,:),[nx,nz]),..\r
143                      matrix(Z(:,j,:),[nx,nz]));\r
144    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];\r
145 end\r
146  \r
147 clf()\r
148 plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")\r
149 xtitle("Трёхмерная сетка!"); show_window()\r
150  ]]></programlisting>\r
151         <scilab:image localized="true">\r
152             nx = 10; ny = 6; nz = 4;\r
153             x = linspace(0,2,nx);\r
154             y = linspace(0,1,ny);\r
155             z = linspace(0,0.5,nz);\r
156             [X,Y,Z] = ndgrid(x,y,z);\r
157             \r
158             XF=[]; YF=[]; ZF=[];\r
159             \r
160             for k=1:nz\r
161             [xf,yf,zf] = nf3d(X(:,:,k), Y(:,:,k), Z(:,:,k));\r
162             XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];\r
163             end\r
164             \r
165             for j=1:ny\r
166             [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),..\r
167             matrix(Y(:,j,:),[nx,nz]),..\r
168             matrix(Z(:,j,:),[nx,nz]));\r
169             XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];\r
170             end\r
171             \r
172             clf()\r
173             plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")\r
174             xtitle("Трёхмерная сетка!"); show_window()\r
175             \r
176         </scilab:image>\r
177         \r
178         <para><emphasis role="bold">Example #3: Create a table of digrams:</emphasis> </para>\r
179         <programlisting role="example"><![CDATA[  \r
180 [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])\r
181 c1+c2\r
182  ]]>    </programlisting>\r
183         <screen>\r
184 <![CDATA[--> [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])\r
185  c2  = \r
186 !a  b  c  d  e  f  g  h  !\r
187 !a  b  c  d  e  f  g  h  !\r
188 !a  b  c  d  e  f  g  h  !\r
189 \r
190  c1  = \r
191 !a  a  a  a  a  a  a  a  !\r
192 !b  b  b  b  b  b  b  b  !\r
193 !c  c  c  c  c  c  c  c  !\r
194 \r
195 --> c1+c2\r
196  ans  =\r
197 !aa  ab  ac  ad  ae  af  ag  ah  !\r
198 !ba  bb  bc  bd  be  bf  bg  bh  !\r
199 !ca  cb  cc  cd  ce  cf  cg  ch  !\r
200 ]]></screen>\r
201         \r
202     </refsection>\r
203     <refsection role="see also">\r
204         <title>Смотрите также</title>\r
205         <simplelist type="inline">\r
206             <member>\r
207                 <link linkend="meshgrid">meshgrid</link>\r
208             </member>\r
209             <member>\r
210                 <link linkend="kron">kron</link>\r
211             </member>\r
212             <member>\r
213                 <link linkend="feval">feval</link>\r
214             </member>\r
215             <member>\r
216                 <link linkend="eval3d">eval3d</link>\r
217             </member>\r
218             <member>\r
219                 <link linkend="nf3d">nf3d</link>\r
220             </member>\r
221         </simplelist>\r
222     </refsection>\r
223     <refsection role="history">\r
224         <title>История</title>\r
225         <revhistory>\r
226             <revision>\r
227                 <revnumber>6.0</revnumber>\r
228                 <revdescription>Extension to all homogeneous datatypes ([], booleans, encoded integers, polynomials, rationals, strings). Revision of the help page.\r
229                 </revdescription>\r
230             </revision>\r
231         </revhistory>\r
232     </refsection>\r
233 </refentry>\r