extraction
extraction à partir d'une matrice ou d'une liste
Séquence d'appel
x(i) x(i,j) x(i,j,k,...) [...] = l(i) [...] = l(k1)...(kn)(i) ou [...] = l(list(k1,...,kn,i)) l(k1)...(kn)(i,j) ou l(list(k1,...,kn,list(i,j))
Paramètres
- x
matrice de tout type
- l
liste
- i,j, k, ..
indices
- k1,...kn
indices à valeurs entières
Description
Cas des matrices
i, j,
k, ... peuvent être :
- Un scalaire, un vecteur ou une matrice à éléments positifs.
r=x(i,j)construit la matricertelle que:r(l,k)=x(int(i(l)),int(j(k)))pour
lvariant de 1 àsize(i,'*')et
kvariant de 1 àsize(j,'*').La valeur maximale de
i(resp.j) doit être inférieure ou égale àsize(x,1)(resp.size(x,2)).r=x(i)oùxest une matrice 1 x 1, construit la matricertelle quer(l,k)=x(int(i(l)),int(i(k)))pourlvariant de 1 àsize(i,1)etkvariant de 1 àsize(i,2). Noter que dans ce cas l'indiceiest valable si toutes ses composantes sont égales à 1.r=x(i)avecxun vecteur ligne, construit le vecteur lignertel quer(l)=x(int(i(l)))pourlentre 1 etsize(i,'*')La valeur maximale deidoit être inférieure ou égale àsize(x,'*').r=x(i)avecxune matrice à une ou plusieurs colonnes, construit la matricertelle quer(l)(lvariant de 1 àsize(i,'*')) contient le terme numéroint(i(l))du vecteur colonne issu de la concaténation des colonnes dex. La valeur maximale deidoit être inférieure ou égale àsize(x,'*').
- Le symbole
:signifiant "tous les éléments".r=x(i,:)construit la matricertelle quer(l,k)=x(int(i(l)),k))pourlvariant de 1 àsize(i,'*')etkvariant de 1 àsize(x,2)r=x(:,j)construit la matricertelle quer(l,k)=x(l,int(j(k)))pourlvariant de 1 àsize(r,1)etkvariant de 1 àsize(j,'*').r=x(:)construit le vecteur colonnerobtenu par concaténation des colonnes dex. Cette commande est équivalente àr=matrix(x,size(x,'*'),1).
- Un vecteur de booléens
Si un indice (
iouj) est un vecteur de booléen il est interprété commefind(i)oufind(j), respectivement.- Un polynôme
Si un indice (
iouj) est un vecteur de polynômes ou de polynômes implicites il est interprété commehorner(i,m)ouhorner(j,n), respectivement, oùmetnsont les dimensions dexassociées. Même si cette fonctionnalité marche pour tous les polynômes, il est recommandé d'utiliser des polynômes dans$par souci de lisibilité.
Dans le case des matrices ayant plus de 2 dimensions (voir:hypermatrices) la dimensionalité est automatiquement réduite si les dimensions les plus à droite sont égales à 1.
Cas des listes
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)
ietj, peuvent être :- un scalaire, un vecteur ou matrice à termes positifs
[r1,...rn]=l(i)extrait les termesi(k)de la liste l et les stocke dans les variablesrkpourkvariant de 1 àsize(i,'*')- le symbole
: qui représente "tous les éléments".
- un vecteur de booléens
Si
iest un vecteur de booléens, il est interprété commefind(i).- un polynôme
Si
iest un vecteur de polynômes ou de polynômes implicites il est interprété commehorner(i,m)oùm=size(l). Même si cette fonctionnalité marche pour tous les polynômes, il est recommandé d'utiliser des polynômes dans$par souci de lisibilité.
k1,..knpeuvent être :- un nombre réel positif à valeur entière
- un polynôme
un polynôme, interprété comme
horner(ki,m)oumest la taille de la sous-liste correspondante.- une chaîne de caractères
associée à un nom d'entrée de sous-liste
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.
Remarques
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.
Exemples
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 simples et des listes typées tlist :
Voir aussi
- insertion — insertion/modification dans une variable
- colon — Générateur de séries. Adresse tous les éléments d'une liste ou d'un tableau
- find — donne la position des éléments %T ou non nuls d'un tableau booléen ou numérique.
- horner — évalue des polynômes ou des fractions rationnelles en des valeurs données
- parentheses — parenthèses droite et gauche
| Report an issue | ||
| << &, && | Fonctions Elémentaires | ind2sub >> |