Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - Русский - 日本語

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Aide de Scilab >> Scilab > Mots clés Scilab > extraction

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 matrice r telle que:

    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)).

  • r=x(i)x est une matrice 1 x 1, construit la matrice r telle que r(l,k)=x(int(i(l)),int(i(k))) pour l variant de 1 à size(i,1) et k variant de 1 à size(i,2). Noter que dans ce cas l'indice i est valable si toutes ses composantes sont égales à 1.

  • r=x(i) avec x un vecteur ligne, construit le vecteur ligne r tel que r(l)=x(int(i(l))) pour l entre 1 et size(i,'*') La valeur maximale de i doit être inférieure ou égale à size(x,'*').

  • r=x(i) avec x une matrice à une ou plusieurs colonnes, construit la matrice r telle que r(l) (l variant de 1 à size(i,'*')) contient le terme numéro int(i(l)) du vecteur colonne issu de la concaténation des colonnes de x. La valeur maximale de i doit être inférieure ou égale à size(x,'*').

Le symbole

: signifiant "tous les éléments".

  • r=x(i,:) construit la matrice r telle que r(l,k)=x(int(i(l)),k)) pour l variant de 1 à size(i,'*') et k variant de 1 à size(x,2)

  • r=x(:,j) construit la matrice r telle que r(l,k)=x(l,int(j(k))) pour l variant de 1 à size(r,1) et k variant de 1 à size(j,'*').

  • r=x(:) construit le vecteur colonne r obtenu par concaténation des colonnes de x. Cette commande est équivalente à r=matrix(x,size(x,'*'),1).

Un vecteur de booléens

Si un indice (i ou j ) est un vecteur de booléen il est interprété comme find(i) ou find(j), respectivement.

Un polynôme

Si un indice (i ou j ) est un vecteur de polynômes ou de polynômes implicites il est interprété comme horner(i,m) ou horner(j,n), respectivement, où m et n sont les dimensions de x associé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)

i et j, peuvent être :
un scalaire, un vecteur ou matrice à termes positifs

[r1,...rn]=l(i) extrait les termes i(k) de la liste l et les stocke dans les variables rk pour k variant de 1 à size(i,'*')

le symbole :

qui représente "tous les éléments".

un vecteur de booléens

Si i est un vecteur de booléens, il est interprété comme find(i).

un polynôme

Si i est un vecteur de polynômes ou de polynômes implicites il est interprété comme horner(i,m)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,..kn peuvent être :
un nombre réel positif à valeur entière

un polynôme

un polynôme, interprété comme horner(ki,m) ou m est 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)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 (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'])

Voir aussi

  • find — trouve les indices des éléments vrais d'un vecteur ou d'une matrice de booléens
  • horner — évaluation d'un polynôme ou d'une fraction rationnelle
  • parentheses — parenthèses droite et gauche
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 13:54:27 CEST 2014