Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2025.0.0 - Français


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 simples et des listes typées 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

  • 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
<< bernstein Fonctions Elémentaires ind2sub >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 24 11:15:58 CEST 2024