Elementary function: move ndgrid to the right place after 6ad9efdc
[scilab.git] / scilab / modules / elementary_functions / help / fr_FR / 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="fr">
4     
5     <refnamediv>
6         
7         <refname>ndgrid</refname>
8         
9         <refpurpose>construit des matrices ou hypermatrices en répliquant des vecteurs
10             
11         </refpurpose>
12         
13     </refnamediv>
14     
15     <refsynopsisdiv>
16         
17         <title>Séquences d'appel</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>Paramètres</title>
34         
35         <variablelist>
36             
37             <varlistentry>
38                 
39                 <term>x, y, z, ...</term>
40                 
41                 <listitem>
42                     
43                     <para>vecteurs de types simples quelconques possiblement
44                         
45                         distincts (booléens,
46                         
47                         entiers encodés, décimaux, complexes, polynômes, rationnels,
48                         
49                         textes).
50                     </para>
51                     
52                 </listitem>
53                 
54             </varlistentry>
55             
56             <varlistentry>
57                 
58                 <term>X, Y, Z, ...</term>
59                 
60                 <listitem>
61                     
62                     <para>Matrices (si seulement 2 vecteurs d'entrée),
63                         
64                         ou hypermatrices, toutes de tailles identiques :
65                        size(x,"*") lignes, size(y,"*") colonnes,
66                         
67                         size(z,"*") feuilles, etc.
68                   </para>
69                   <para>Par ailleurs,
70                         <varname>X</varname> a le type de <varname>x</varname>;
71                         
72                         <varname>Y</varname> a le type de <varname>y</varname>;
73                         
74                         etc.
75                         
76                     </para>
77                     
78                 </listitem>
79                 
80             </varlistentry>
81             
82         </variablelist>
83         
84     </refsection>
85     
86     <refsection role="description">
87         
88         <title>Description</title>
89         
90         <para>
91             La première application de <function>ndgrid</function> consiste à
92             
93             construire une grille multidimensionnelle de noeuds échantillonnant
94             
95             l'espace 2D ou 3D ou N-D, à partir de 2, 3 ou N vecteurs
96             
97             <literal>x</literal>, <literal> y</literal>, etc.. indiquant
98             
99             l'échantillonage de chaque direction de l'espace.
100             
101         </para>
102         
103         <para>Pour ce faire,
104             
105             <itemizedlist>
106                 
107                 <listitem>la matrice ou l'hypermatrice <literal>X</literal>
108                 
109                 est construite en répliquant le vecteur  <literal>x</literal>
110                 
111                 dans toutes ses colonnes ;
112                 
113             </listitem>
114              
115             
116             <listitem>
117                 la matrice ou l'hypermatrice <literal>Y</literal>
118                 
119                 est construite en répliquant le vecteur  <literal>y</literal>
120                 
121                 dans toutes ses lignes ;
122                 
123             </listitem>
124              
125             
126             <listitem>
127                 la matrice ou l'hypermatrice <literal>Z</literal>
128                 
129                 est construite en répliquant le vecteur  <literal>z</literal>
130                 
131                 en épaisseur pour tous les points (x,y) ;
132                 
133                 etc.
134                 
135             </listitem>
136             
137         </itemizedlist>
138         
139     </para>
140     
141     <screen>
142         
143         <![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])
144  X  =
145    1.   1.   1.   1.
146    3.   3.   3.   3.
147    4.   4.   4.   4.
148
149    Y  =
150    0.   2.   4.   6.
151    0.   2.   4.   6.
152    0.   2.   4.   6.
153 ]]>
154     </screen>
155     
156     <para>
157         
158         Les coordonnées du noeud node(i,j) dans l'espace 2D seront alors
159         
160         simplement <literal>[x(i), y(j)]</literal> maintenant données par
161         
162         <literal>[X(i,j), Y(i,j)]</literal>. De même, les coordonnées du noeud
163         
164         <literal>node(i,j,k)</literal> dans une grille 3D seront
165         
166         <literal>[x(i), y(j), z(k)]</literal> données par
167         
168         <literal>[X(i,j,k), Y(i,j,k), Z(i,j,k)]</literal>.
169         
170     </para>
171     
172     <para>Ce schéma de construction par réplication peut être utilisé
173         
174         pour construire une grille à un nombre N quelconque de dimensions.
175         
176         Par ailleurs, il est indépendant de la nature des vecteurs de base répliqués
177         
178         et peut donc être utilisé pour tous les types de données uniformes.
179         
180         A titre d'exemple, considérons un ensemble d'objets ayant tous 2 attributs :
181         
182         <orderedlist>
183             
184             <listitem>
185                 Le premier est un nombre <literal>n</literal>,
186                 
187                 avec 2 valeurs possibles, par exemple: <literal>n = [ 3 7 ]</literal>
188                 
189             </listitem>
190             
191             <listitem>Le second est une lettre, avec 6 choix possibles,
192                 
193                 par exemple: <literal>c = ["a" "e" "i" "o" "u" "y"]</literal>
194                 
195             </listitem>
196             
197         </orderedlist>
198         
199         Nous souhaitons maintenant générer l'ensemble complet des
200         
201         objets {n,c} possibles. Il s'agit juste d'une grille 2D
202         
203         d'<literal>objets</literal> :
204         
205     </para>
206     
207     <screen>
208         
209         <![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])
210  X  =
211    1.   1.   1.   1.
212    3.   3.   3.   3.
213    4.   4.   4.   4.
214
215    Y  =
216    0.   2.   4.   6.
217    0.   2.   4.   6.
218    0.   2.   4.   6.
219 ]]>
220     </screen>
221     
222     <para>De là, l'objet(i,j) aura les attributs
223         
224         <literal>{n(i) c(j)}</literal> que l'on pourra maintenant désigner par
225         
226         <literal>{N(i,j) C(i,j)}</literal>.
227         
228         Ce type de grille pourra être utilisée pour initialiser un tableau
229         
230         2D de structures ayant 2 champs <literal>n</literal> et <literal>c</literal>.
231         
232     </para>
233     
234     <para>Les exemples suivants montrent comment utiliser les matrices ou
235         
236         hypermatrices <varname>X, Y, Z</varname> produites, pour des applications
237         
238         usuelles.
239         
240     </para>
241      
242     
243 </refsection>
244
245 <refsection role="examples">
246     
247     <title>Exemples</title>
248     
249     
250     
251     <para>
252         <emphasis role="bold">Exemple #1:</emphasis>
253     </para>
254     
255     <programlisting role="example"><![CDATA[
256 // Créons une grille de points {X,Y}
257 x = linspace(-10,2,40);
258 y = linspace(-5,5,40);
259 [X,Y] = ndgrid(x,y); // x et y sont répliqués pour créer la grille
260
261 // Calculons des ordonnées Z(X,Y) et traçons Z(X,Y) :
262 Z = X - 3*X.*sin(X).*cos(Y-4) ;
263 clf()
264 plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
265  ]]></programlisting>
266     
267     <scilab:image>
268         
269         x = linspace(-10,2,40);
270         
271         y = linspace(-5,5,40);
272         
273         [X,Y] = ndgrid(x,y);
274         
275         Z = X - 3*X.*sin(X).*cos(Y-4) ;
276         
277         clf()
278         
279         plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
280         
281     </scilab:image>
282     
283     
284     
285     <para>
286         <emphasis role="bold">Exemple #2:</emphasis>
287     </para>
288     
289     <programlisting role="example"><![CDATA[
290 // Créons une grille en 3 dimensions
291 nx = 10; ny = 6; nz = 4;
292 x = linspace(0,2,nx);
293 y = linspace(0,1,ny);
294 z = linspace(0,0.5,nz);
295 [X,Y,Z] = ndgrid(x,y,z);
296
297 // Nous choisissons ici une représentation cartésienne, mais l'on pourrait
298 // aussi travailler en coordonnées cylindriques, sphériques, ou autres.
299 // Transformons les coordonnées pour plot3d() :
300 XF=[]; YF=[]; ZF=[];
301
302 for k=1:nz
303    [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
304    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
305 end
306
307 for j=1:ny
308    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
309                      matrix(Y(:,j,:),[nx,nz]),...
310                      matrix(Z(:,j,:),[nx,nz]));
311    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
312 end
313
314 // Affichage :
315 clf()
316 plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
317 xtitle("A 3d grid !"); show_window()
318  ]]></programlisting>
319     
320     <scilab:image>
321         
322         nx = 10; ny = 6; nz = 4;
323         
324         x = linspace(0,2,nx);
325         
326         y = linspace(0,1,ny);
327         
328         z = linspace(0,0.5,nz);
329         
330         [X,Y,Z] = ndgrid(x,y,z);
331         
332         
333         
334         XF=[]; YF=[]; ZF=[];
335         
336         
337         
338         for k=1:nz
339         
340         [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
341         
342         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
343         
344         end
345         
346         
347         
348         for j=1:ny
349         
350         [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
351         
352         matrix(Y(:,j,:),[nx,nz]),...
353         
354         matrix(Z(:,j,:),[nx,nz]));
355         
356         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
357         
358         end
359         
360         plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
361         
362         xtitle("A 3d grid !");
363         
364     </scilab:image>
365     
366     <para>
367         <emphasis role="bold">Exemple #3: création d'une table de digrammes</emphasis>
368     </para>
369     
370     <programlisting role="example"><![CDATA[
371 [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
372 c1+c2
373  ]]></programlisting>
374     
375     <screen>
376         
377         <![CDATA[--> [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
378  c2  =
379 !a  b  c  d  e  f  g  h  !
380 !a  b  c  d  e  f  g  h  !
381 !a  b  c  d  e  f  g  h  !
382
383  c1  =
384 !a  a  a  a  a  a  a  a  !
385 !b  b  b  b  b  b  b  b  !
386 !c  c  c  c  c  c  c  c  !
387
388 --> c1+c2
389  ans  =
390 !aa  ab  ac  ad  ae  af  ag  ah  !
391 !ba  bb  bc  bd  be  bf  bg  bh  !
392 !ca  cb  cc  cd  ce  cf  cg  ch  !
393 ]]>
394     </screen>
395     
396 </refsection>
397
398 <refsection role="see also">
399     
400     <title>Voir aussi</title>
401     
402     <simplelist type="inline">
403         
404         <member>
405             
406             <link linkend="meshgrid">meshgrid</link>
407             
408         </member>
409         
410         <member>
411             
412             <link linkend="kron">kron</link>
413             
414         </member>
415         
416         <member>
417             
418             <link linkend="feval">feval</link>
419             
420         </member>
421         
422         <member>
423             
424             <link linkend="eval3d">eval3d</link>
425             
426         </member>
427         
428         <member>
429             
430             <link linkend="nf3d">nf3d</link>
431             
432         </member>
433         
434     </simplelist>
435     
436 </refsection>
437
438 <refsection role="history">
439     
440     <title>Historique</title>
441     
442     <revhistory>
443         
444         <revision>
445             
446             <revnumber>6.0</revnumber>
447             
448             <revdescription>Extension à tous les types de données uniformes ([], booleans, encoded integers, polynomials, rationals, strings). Révision de la page d'aide.
449                 
450             </revdescription>
451             
452         </revision>
453         
454     </revhistory>
455     
456 </refsection>
457
458 </refentry>
459