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


find

donne la position des éléments %T ou non nuls d'un tableau booléen ou numérique.

Séquence d'appel

ii = find(x)
[i1,i2,..] = find(x)
.. = find(x, nmax)

Paramètres

x

Vecteur, matrice, ou hypermatrice de booléens ou de nombres. Tout nombre non nul est équivalent à %T. Les vecteurs ou matrices creuses sont acceptés.

nmax

un entier donnant le nombre maximal d'indices à retourner. La valeur par défaut est -1 qui signifie "tous". Cette option peut être utilisée dans un but d'efficacité en évitant la recherche de tous les indices.

ii

vecteur ligne des indices linéarisés des éléments %T ou non nuls, ou matrice vide [].

i1, i2, ..

vecteurs ligne des indices directionels des élements %T ou non nuls, or matrices vides [].

Description

Si x est une matrice booléenne,

ii=find(x) retourne le vecteur des indices i pour lesquels x(i) est "vrai". Si aucun élément vrai n'est trouvé find retourne une matrice vide.

[i1,i2,..]=find(x) retourne le vecteur des indices i1 (pour les lignes) et i2 (pour les colonnes),.. tel que x(i1(n),i2(n),..) est "vrai". Si aucun élément vrai n'est trouvé find retourne des matrices vides dans i1, i2, ...

Si x est une matrice standard ou une hypermatrice find(x) est interprété comme find(x<>0).

find([]) retourne [].

Exemples

Avec un tableau booléen :

A = [%F %T %T %F ; %T %F %F %T]
find(A)
find(A,2)
--> A = [%F %T %T %F ; %T %F %F %T]
 A  =
  F T T F
  T F F T

--> find(A)
 ans  =
   2.   3.   5.   8.

--> find(A,2)
 ans  =
   2.   3.

Avec un tableau de nombres :

B = [0 -1 0 3 ; 0 -1 -0.4 0]
find(B)
[i, j] = find(B);
[i' j']
--> B = [0 -1 0 3 ; 0 -1 -0.4 0]
 B  =
   0.  -1.   0.    3.
   0.  -1.  -0.4   0.

--> find(B)
 ans  =
   3.   4.   6.   7.

--> [i, j] = find(B);
--> [i' j']
 ans  =
   1.   2.
   2.   2.
   2.   3.
   1.   4.

Avec une hypermatrice de nombres :

E = grand(2,5,2,"uin",1,6)
find(E < 4)
--> E = grand(2,5,2,"uin",1,6)
 E  =
(:,:,1)
   1.   6.   5.   5.   4.
   6.   5.   3.   4.   4.
(:,:,2)
   2.   4.   3.   6.   5.
   5.   6.   6.   6.   4.

--> find(E < 4)
 ans  =
   1.   6.   11.   15.

Avec une matrice creuse numérique ou booléenne :

C = [0  3  7  0  9  0
     0  4  0  0  5  0
     6  0  1  0  3  8
    ];
C = sparse(C);
find(C)
find(C, 4)

// Avec une matrice creuse booléenne
D = C > 4
full(D)
find(D)
--> C = sparse(C);
--> find(C)
 ans  =
    3.    4.    5.    7.    9.    13.    14.    15.    18.

-->find(C, 4)
 ans  =
    3.    4.    5.    7.

--> // Avec une matrice creuse booléenne
--> D = C > 4
 D  =
(  3,  6) sparse boolean matrix
(  1,  3)   T
(  1,  5)   T
(  2,  5)   T
(  3,  1)   T
(  3,  6)   T

--> full(D)
 ans  =
  F F T F T F
  F F F F T F
  T F F F F T

-->find(D)
 ans  =
    3.    7.    13.    14.    18.

Avec le résultat booléen d'une condition individuelle sur du texte :

beers = ["Desperados", "Leffe", "Kronenbourg", "Heineken"];
find(beers == "Leffe")
find(beers == "1664")
--> find(beers == "Leffe")
 ans  =
   2.

--> find(beers == "1664")
 ans  =
    []

Adressage des éléments sélectionnés :

// a) via leurs indices linéarisés :
H = [ 0  -2  -8  4  -5  -1
     -2   2  -9  5   0   1
    ];
L = H;
L(find(L<0)) = -10

// b) Directement via le tableau de leur statut booléen :
L = H;
L(L<0) = -10
--> // a) via leurs indices linéarisés :
--> H = [ 0  -2  -8  4  -5  -1
  >      -2   2  -9  5   0   1
  >     ];
--> L = H;
--> L(find(L<0)) = -10
 L  =
   0.   -10.  -10.   4.  -10.  -10.
  -10.   2.   -10.   5.   0.    1.

--> // b) Directement via le tableau de leur statut booléen :
--> L = H;
--> L(L<0) = -10
 L  =
   0.   -10.  -10.   4.  -10.  -10.
  -10.   2.   -10.   5.   0.    1.

Voir aussi

  • vectorfind — locates occurences of a (wildcarded) vector in a matrix or hypermatrix
  • grep — find matches of a string in a vector of strings
  • findobj — find an object with specified property
  • boolean — Objets Scilab, variables booléennes et opérateurs & | ~
Report an issue
<< dsearch Chercher et trier gsort >>

Copyright (c) 2022-2023 (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:
Mon May 22 12:39:41 CEST 2023