1
1
<?xml version="1.0" encoding="UTF-8"?>
2
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" version="5.0-subset Scilab" xml:id="extraction" xml:lang="fr">
4
<refname>extraction</refname>
5
<refpurpose>extraction à partir d'une matrice ou d'une liste</refpurpose>
8
<title>Séquence d'appel</title>
14
[...]=l(k1)...(kn)(i) ou [...]=l(list(k1,...,kn,i))
15
l(k1)...(kn)(i,j) ou l(list(k1,...,kn,list(i,j))
19
<title>Paramètres</title>
24
<para>matrice de tout type</para>
34
<term>i,j, k, ..</term>
42
<para>indices à valeurs entières</para>
48
<title>Description</title>
51
<term>CAS DES MATRICES</term>
54
<literal>i</literal>, <literal>j</literal>,
55
<literal>k</literal>, ... peuvent être :
59
<term>Un scalaire, un vecteur ou une matrice à éléments
66
<literal>r=x(i,j)</literal> construit la matrice
67
<literal>r</literal> telle que:
70
<literal>r(l,k)=x(int(i(l)),int(j(k)))</literal>
73
pour <literal>l</literal> variant de 1 à
74
<literal>size(i,'*')</literal>
77
et <literal>k</literal> variant de 1 à
78
<literal>size(j,'*')</literal>.
81
La valeur maximale de <literal>i</literal> (resp.
82
<literal>j</literal>) doit être inférieure ou égale à
83
<literal>size(x,1)</literal> (resp.
84
<literal>size(x,2)</literal>).
89
<literal>r=x(i)</literal> où <literal>x</literal>
90
est une matrice 1 x 1, construit la matrice
91
<literal>r</literal> telle que
92
<literal>r(l,k)=x(int(i(l)),int(i(k)))</literal> pour
93
<literal>l</literal> variant de 1 à
94
<literal>size(i,1)</literal> et <literal>k</literal>
95
variant de 1 à <literal>size(i,2)</literal>. Noter que
96
dans ce cas l'indice <literal>i</literal> est valable si
97
toutes ses composantes sont égales à 1.
102
<literal>r=x(i)</literal> avec <literal>x</literal>
103
un vecteur ligne, construit le vecteur ligne
104
<literal>r</literal> tel que
105
<literal>r(l)=x(int(i(l)))</literal> pour
106
<literal>l</literal> entre 1 et
107
<literal>size(i,'*')</literal> La valeur maximale de
108
<literal>i</literal> doit être inférieure ou égale à
109
<literal>size(x,'*')</literal>.
114
<literal>r=x(i)</literal> avec <literal>x</literal>
115
une matrice à une ou plusieurs colonnes, construit la
116
matrice <literal>r</literal> telle que
117
<literal>r(l)</literal> (<literal>l</literal> variant de 1
118
à <literal>size(i,'*')</literal>) contient le terme numéro
119
<literal>int(i(l))</literal> du vecteur colonne issu de la
120
concaténation des colonnes de <literal>x</literal>. La
121
valeur maximale de <literal>i</literal> doit être
122
inférieure ou égale à
123
<literal>size(x,'*')</literal>.
130
<term>Le symbole</term>
133
<literal> : </literal> signifiant "tous les
139
<literal>r=x(i,:)</literal> construit la matrice
140
<literal>r</literal> telle que
141
<literal>r(l,k)=x(int(i(l)),k))</literal> pour
142
<literal>l</literal> variant de 1 à
143
<literal>size(i,'*')</literal> et <literal>k</literal>
144
variant de 1 à <literal>size(x,2)</literal>
149
<literal>r=x(:,j)</literal> construit la matrice
150
<literal>r</literal> telle que
151
<literal>r(l,k)=x(l,int(j(k)))</literal> pour
152
<literal>l</literal> variant de 1 à
153
<literal>size(r,1)</literal> et <literal>k</literal>
154
variant de 1 à <literal>size(j,'*')</literal>.
159
<literal>r=x(:)</literal> construit le vecteur
160
colonne <literal>r</literal> obtenu par concaténation des
161
colonnes de <literal> x</literal>. Cette commande est
163
<literal>r=matrix(x,size(x,'*'),1)</literal>.
170
<term>Un vecteur de booléens</term>
173
Si un indice (<literal>i</literal> ou
174
<literal>j</literal> ) est un vecteur de booléen il est
175
interprété comme <literal>find(i)</literal> ou
176
<literal>find(j)</literal>, respectivement.
181
<term>Un polynôme</term>
184
Si un indice (<literal>i</literal> ou
185
<literal>j</literal> ) est un vecteur de polynômes ou de
186
polynômes implicites il est interprété comme
187
<literal>horner(i,m)</literal> ou
188
<literal>horner(j,n)</literal>, respectivement, où
189
<literal>m</literal> et <literal>n</literal> sont les
190
dimensions de <literal>x</literal> associées. Même si cette
191
fonctionnalité marche pour tous les polynômes, il est
192
recommandé d'utiliser des polynômes dans <literal>$</literal>
193
par souci de lisibilité.
198
<para>Dans le case des matrices ayant plus de 2 dimensions
199
(voir:<link linkend="hypermatrices">hypermatrices</link>) la
200
dimensionalité est automatiquement réduite si les dimensions les
201
plus à droite sont égales à 1.
206
<term>CAS DES LISTES</term>
209
S'ils sont présents, les <literal>ki</literal> donnent le
210
chemin vers un terme d'une sous-liste de la liste
211
<literal>l</literal>. Ils permettent de faire une extraction
212
récursive directe sans utiliser de variable intermédiaire.
214
<para> Les instructions:</para>
216
<literal>[...]=l(k1)...(kn)(i) et
217
[...]=l(list(k1,...,kn,i))
220
<para>sont interprétées comme :</para>
222
<literal>lk1 = l(k1)</literal>, <literal> .. = .. </literal>,
223
<literal>lkn = lkn-1(kn)</literal>, <literal>[...] =
227
<para>De même, les instructions</para>
229
<literal>l(k1)...(kn)(i,j) et
230
l(list(k1,...,kn,list(i,j))
233
<para>sont interprétées comme :</para>
235
<literal>lk1 = l(k1)</literal>, <literal> .. = .. </literal>,
236
<literal>lkn = lkn-1(kn)</literal>,
237
<literal>lkn(i,j)</literal>
242
<literal>i</literal> et <literal>j</literal>, peuvent être
248
<term>un scalaire, un vecteur ou matrice à termes positifs </term>
251
<literal>[r1,...rn]=l(i)</literal> extrait les termes
252
<literal>i(k)</literal> de la liste l et les stocke dans les
253
variables <literal>rk</literal> pour <literal>k</literal>
254
variant de 1 à <literal>size(i,'*')</literal>
260
le symbole <literal> : </literal>
263
<para> qui représente "tous les éléments".</para>
267
<term>un vecteur de booléens</term>
270
Si <literal>i</literal> est un vecteur de booléens, il
271
est interprété comme <literal>find(i)</literal>.
276
<term>un polynôme</term>
279
Si <literal>i</literal> est un vecteur de polynômes ou
280
de polynômes implicites il est interprété comme
281
<literal>horner(i,m)</literal> où
282
<literal>m=size(l)</literal>. Même si cette fonctionnalité
283
marche pour tous les polynômes, il est recommandé d'utiliser
284
des polynômes dans <literal>$</literal> par souci de
294
<literal>k1</literal>,..<literal>kn</literal> peuvent être :
299
<term>un nombre réel positif à valeur entière</term>
305
<term>un polynôme</term>
307
<para>un polynôme, interprété comme
308
<literal>horner(ki,m)</literal> ou <literal>m</literal> est la
309
taille de la sous-liste correspondante.
314
<term>une chaîne de caractères</term>
316
<para>associée à un nom d'entrée de sous-liste</para>
323
<para>Quand le chemin désigne plusieurs termes d'une liste
324
l'instruction doit avoir autant de termes dans la liste des
325
arguments du membre de gauche que le nombre de termes sélectionnés.
326
Mais si la syntaxe d'extraction est utilisée dans les arguments
327
d'entrée d'une fonction, chaque terme renvoyé est ajouté aux
331
Notez que <literal>l(list())</literal> est identique à
332
<literal>l</literal>.
339
<title>REMARQUES</title>
340
<para>Pour les matrices rationnelles et les systèmes dynamiques linéaires
341
stockés sous forme de représentation d'état, la syntaxe
342
<literal>x(i)</literal> ne doit pas être utilisée pour l'extraction des
343
éléments d'un vecteur, à cause de la confusion possible avec l'extraction
344
des éléments de liste. La syntaxe <literal>x(1,j)</literal> où
345
<literal>x(i,1)</literal> doit être utilisée dans ce cas.
349
<title>Exemples</title>
350
<programlisting role="example"><![CDATA[
4
<refname>extraction</refname>
5
<refpurpose>extraction à partir d'une matrice ou d'une liste</refpurpose>
8
<title>Séquence d'appel</title>
14
[...]=l(k1)...(kn)(i) ou [...]=l(list(k1,...,kn,i))
15
l(k1)...(kn)(i,j) ou l(list(k1,...,kn,list(i,j))
19
<title>Paramètres</title>
24
<para>matrice de tout type</para>
34
<term>i,j, k, ..</term>
42
<para>indices à valeurs entières</para>
48
<title>Description</title>
51
<term>CAS DES MATRICES</term>
54
<literal>i</literal>, <literal>j</literal>,
55
<literal>k</literal>, ... peuvent être :
59
<term>Un scalaire, un vecteur ou une matrice à éléments
66
<literal>r=x(i,j)</literal> construit la matrice
67
<literal>r</literal> telle que:
70
<literal>r(l,k)=x(int(i(l)),int(j(k)))</literal>
73
pour <literal>l</literal> variant de 1 à
74
<literal>size(i,'*')</literal>
77
et <literal>k</literal> variant de 1 à
78
<literal>size(j,'*')</literal>.
81
La valeur maximale de <literal>i</literal> (resp.
82
<literal>j</literal>) doit être inférieure ou égale à
83
<literal>size(x,1)</literal> (resp.
84
<literal>size(x,2)</literal>).
89
<literal>r=x(i)</literal> où <literal>x</literal>
90
est une matrice 1 x 1, construit la matrice
91
<literal>r</literal> telle que
92
<literal>r(l,k)=x(int(i(l)),int(i(k)))</literal> pour
93
<literal>l</literal> variant de 1 à
94
<literal>size(i,1)</literal> et <literal>k</literal>
95
variant de 1 à <literal>size(i,2)</literal>. Noter que
96
dans ce cas l'indice <literal>i</literal> est valable si
97
toutes ses composantes sont égales à 1.
102
<literal>r=x(i)</literal> avec <literal>x</literal>
103
un vecteur ligne, construit le vecteur ligne
104
<literal>r</literal> tel que
105
<literal>r(l)=x(int(i(l)))</literal> pour
106
<literal>l</literal> entre 1 et
107
<literal>size(i,'*')</literal> La valeur maximale de
108
<literal>i</literal> doit être inférieure ou égale à
109
<literal>size(x,'*')</literal>.
114
<literal>r=x(i)</literal> avec <literal>x</literal>
115
une matrice à une ou plusieurs colonnes, construit la
116
matrice <literal>r</literal> telle que
117
<literal>r(l)</literal> (<literal>l</literal> variant de 1
118
à <literal>size(i,'*')</literal>) contient le terme numéro
119
<literal>int(i(l))</literal> du vecteur colonne issu de la
120
concaténation des colonnes de <literal>x</literal>. La
121
valeur maximale de <literal>i</literal> doit être
122
inférieure ou égale à
123
<literal>size(x,'*')</literal>.
130
<term>Le symbole</term>
133
<literal> : </literal> signifiant "tous les
139
<literal>r=x(i,:)</literal> construit la matrice
140
<literal>r</literal> telle que
141
<literal>r(l,k)=x(int(i(l)),k))</literal> pour
142
<literal>l</literal> variant de 1 à
143
<literal>size(i,'*')</literal> et <literal>k</literal>
144
variant de 1 à <literal>size(x,2)</literal>
149
<literal>r=x(:,j)</literal> construit la matrice
150
<literal>r</literal> telle que
151
<literal>r(l,k)=x(l,int(j(k)))</literal> pour
152
<literal>l</literal> variant de 1 à
153
<literal>size(r,1)</literal> et <literal>k</literal>
154
variant de 1 à <literal>size(j,'*')</literal>.
159
<literal>r=x(:)</literal> construit le vecteur
160
colonne <literal>r</literal> obtenu par concaténation des
161
colonnes de <literal> x</literal>. Cette commande est
163
<literal>r=matrix(x,size(x,'*'),1)</literal>.
170
<term>Un vecteur de booléens</term>
173
Si un indice (<literal>i</literal> ou
174
<literal>j</literal> ) est un vecteur de booléen il est
175
interprété comme <literal>find(i)</literal> ou
176
<literal>find(j)</literal>, respectivement.
181
<term>Un polynôme</term>
184
Si un indice (<literal>i</literal> ou
185
<literal>j</literal> ) est un vecteur de polynômes ou de
186
polynômes implicites il est interprété comme
187
<literal>horner(i,m)</literal> ou
188
<literal>horner(j,n)</literal>, respectivement, où
189
<literal>m</literal> et <literal>n</literal> sont les
190
dimensions de <literal>x</literal> associées. Même si cette
191
fonctionnalité marche pour tous les polynômes, il est
192
recommandé d'utiliser des polynômes dans <literal>$</literal>
193
par souci de lisibilité.
198
<para>Dans le case des matrices ayant plus de 2 dimensions
199
(voir:<link linkend="hypermatrices">hypermatrices</link>) la
200
dimensionalité est automatiquement réduite si les dimensions les
201
plus à droite sont égales à 1.
206
<term>CAS DES LISTES</term>
209
S'ils sont présents, les <literal>ki</literal> donnent le
210
chemin vers un terme d'une sous-liste de la liste
211
<literal>l</literal>. Ils permettent de faire une extraction
212
récursive directe sans utiliser de variable intermédiaire.
214
<para> Les instructions:</para>
216
<literal>[...]=l(k1)...(kn)(i) et
217
[...]=l(list(k1,...,kn,i))
220
<para>sont interprétées comme :</para>
222
<literal>lk1 = l(k1)</literal>, <literal> .. = .. </literal>,
223
<literal>lkn = lkn-1(kn)</literal>, <literal>[...] =
227
<para>De même, les instructions</para>
229
<literal>l(k1)...(kn)(i,j) et
230
l(list(k1,...,kn,list(i,j))
233
<para>sont interprétées comme :</para>
235
<literal>lk1 = l(k1)</literal>, <literal> .. = .. </literal>,
236
<literal>lkn = lkn-1(kn)</literal>,
237
<literal>lkn(i,j)</literal>
242
<literal>i</literal> et <literal>j</literal>, peuvent être
248
<term>un scalaire, un vecteur ou matrice à termes positifs </term>
251
<literal>[r1,...rn]=l(i)</literal> extrait les termes
252
<literal>i(k)</literal> de la liste l et les stocke dans les
253
variables <literal>rk</literal> pour <literal>k</literal>
254
variant de 1 à <literal>size(i,'*')</literal>
260
le symbole <literal> : </literal>
263
<para> qui représente "tous les éléments".</para>
267
<term>un vecteur de booléens</term>
270
Si <literal>i</literal> est un vecteur de booléens, il
271
est interprété comme <literal>find(i)</literal>.
276
<term>un polynôme</term>
279
Si <literal>i</literal> est un vecteur de polynômes ou
280
de polynômes implicites il est interprété comme
281
<literal>horner(i,m)</literal> où
282
<literal>m=size(l)</literal>. Même si cette fonctionnalité
283
marche pour tous les polynômes, il est recommandé d'utiliser
284
des polynômes dans <literal>$</literal> par souci de
294
<literal>k1</literal>,..<literal>kn</literal> peuvent être :
299
<term>un nombre réel positif à valeur entière</term>
305
<term>un polynôme</term>
307
<para>un polynôme, interprété comme
308
<literal>horner(ki,m)</literal> ou <literal>m</literal> est la
309
taille de la sous-liste correspondante.
314
<term>une chaîne de caractères</term>
316
<para>associée à un nom d'entrée de sous-liste</para>
323
<para>Quand le chemin désigne plusieurs termes d'une liste
324
l'instruction doit avoir autant de termes dans la liste des
325
arguments du membre de gauche que le nombre de termes sélectionnés.
326
Mais si la syntaxe d'extraction est utilisée dans les arguments
327
d'entrée d'une fonction, chaque terme renvoyé est ajouté aux
331
Notez que <literal>l(list())</literal> est identique à
332
<literal>l</literal>.
339
<title>REMARQUES</title>
340
<para>Pour les matrices rationnelles et les systèmes dynamiques linéaires
341
stockés sous forme de représentation d'état, la syntaxe
342
<literal>x(i)</literal> ne doit pas être utilisée pour l'extraction des
343
éléments d'un vecteur, à cause de la confusion possible avec l'extraction
344
des éléments de liste. La syntaxe <literal>x(1,j)</literal> où
345
<literal>x(i,1)</literal> doit être utilisée dans ce cas.
349
<title>Exemples</title>
350
<programlisting role="example"><![CDATA[
351
351
// CAS DES MATRICES