extraction - extraction à partir d'une matrice ou d'une liste
r(l,k)=x(int(i(l)),int(j(k)))
pour l variant de 1 à size(i,'*')
et k variant de 1 à size(j,'*') .
La valeur maximale de i (resp. j ) doit être inférieure ou égale à size(x,1) (resp. size(x,2) ).
(types LIST et TLIST) S'ils sont présents, les ki donnent le chemin vers un terme d'une sous-liste de la liste l . Ils permettent de faire une extraction récursive directe sans utiliser de variable intermédiaire. Les instructions:
[...]=l(k1)...(kn)(i)
et
[...]=l(list(k1,...,kn,i))
sont interprétées comme :
lk1 = l(k1) , .. = .. , lkn = lkn-1(kn) , [...] = lkn(i)
De même, les instructions
l(k1)...(kn)(i,j)
et
l(list(k1,...,kn,list(i,j))
sont interprétées comme :
lk1 = l(k1) , .. = .. , lkn = lkn-1(kn) , lkn(i,j)
i et j , peuvent valoir :
Quand le chemin désigne plusieurs termes d'une liste l'instruction doit avoir autant de termes dans la liste des arguments du membre de gauche que le nombre de termes sélectionnés. Mais si la syntaxe d'extraction est utilisée dans les arguments d'entrée d'une fonction, chaque terme renvoyé est ajouté aux arguments d'entrée.
Notez que l(list()) est identique à l .
Pour les matrices rationnelles et les systèmes dynamiques linéaires stockés sous forme de représentation d'état, la syntaxe x(i) ne doit pas être utilisée pour l'extraction des éléments d'un vecteur, à cause de la confusion possible avec l'extraction des éléments de liste. La syntaxe x(1,j) où x(i,1) doit être utilisée dans ce cas.
// CAS DES MATRICES a=[1 2 3;4 5 6] a(1,2) a([1 1],2) a(:,1) a(:,3:-1:1) a(1) a(6) a(:) a([%t %f %f %t]) a([%t %f],[2 3]) a(1:2,$-1) a($:-1:1,2) a($) // x='test' x([1 1;1 1;1 1]) // b=[1/%s,(%s+1)/(%s-1)] b(1,1) b(1,$) b(2) // le numérateur // CAS des LISTES (types LIST et TLIST) l=list(1,'qwerw',%s) l(1) [a,b]=l([3 2]) l($) x=tlist(l(2:3)) // construction d'une TLIST avec les deux derniers termes de l // dts=list(1,tlist(['x';'a';'b'],10,[2 3])); dts(2)('a') dts(2)('b')(1,2) [a,b]=dts(2)(['a','b'])