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 - 日本語 - Русский
Aide de Scilab >> Fonctions Elémentaires > Opérations matricielles > or

or

OU logique entre éléments d'un tableau booléen ou numérique

Syntaxe

b = or(A)
b = or(A, 'r')
b = or(A, 'c')
b = or(A, n)

Paramètres

A

vecteur, matrice ou hypermatrice de booléens, d'entiers encodés (de type entier inttype quelconque), de décimaux, ou de nombres complexes. A peut être encodée creuse (sparse).

Un nombre est identifié à %F (faux) s'il vaut 0 ou 0+0i. Sinon (%nan inclus), il est identifé à %T (vrai).

Valeurs particulières de A :
  • or([]) vaut %F.
  • or(%nan) vaut %T.
b

Booléen simple si or(A) est utilisée sans option "r", "c", n. b vaut alors

  • %F, si tous les éléments de A sont %F ou nuls.
  • %T, sinon : au moins un des éléments de A est %T ou non nul.

Sinon : vecteur ligne, colonne, matrice ou hypermatrice. Voir la description de n ci-dessous.

Lorsque A est encodée creuse, b l'est également.

n

N° <= ndims(A) de la dimension selon laquelle or() est appliqué / projeté. Par défaut, or() est appliqué entre tous les éléments de A. Sinon :

  • n = 1 | "r" : or() est appliqué entre les rangées de A. Si A est une matrice, b est alors une rangée, avec b(j) = or(A(:,j))
  • n = 2 | "c" : or() est appliqué entre les colonnes de A. Si A est une matrice, b est alors une colonne, avec b(i) = or(A(i,:)).
  • n > 2 : Si A est une hypermatrice or() est appliqué selon sa nème dimension.

    Exemple: Si ndims(A)==3 et n=3, b sera une matrice booléenne de tailles size(A)([1 2]), avec b(i,j) = or(A(i,j,:)).

Description

or() applique un "OU" logique entre les éléments de l'opérande unique A, et en calcule le résultat.

Pour appliquer un OU logique entre éléments respectifs de 2 tableaux C et D de mêmes tailles, utiliser l'opérateur dédié |.

Pourquoi or([]) vaut-il %F ? Quels que soient les tableaux compatibles B et C, or([B C]) == (or(B) | or(C)). Or, pour B = [], or([B C])==or(C). Pour avoir toujours (or([]) | or(C)) == or(C), or([]) doit impérativement être %F.

Exemples

or([])
or(0)
or(0+0*%i)
or(%eps)
or(%i)
or(%nan)

// Projection à travers une dimension / selon une direction :
A = rand(2,5)<0.3
or(A)
or(A, "r")   // or(A, 1) est équivalent
or(A, "c")   // or(A, 2) est équivalent

// Utilisation entre entiers encodés :
A = int16(grand(3,5,"uin",-10,10));
A(abs(A)<8) = 0
or(A)
or(A,1)

// Avec une hypermatrice de nombres décimaux :
A = rand(3,4,2);
A(A<0.7) = 0
or(A,3)

// Avec une matrice encodée creuse :
A = sprand(70,100, 0.001)
or(A, "r")
or(A, "c")
--> or([])
 ans  =
  F

--> or(0)
 ans  =
  F

--> or(0+0*%i)
 ans  =
  F

--> or(%eps)
 ans  =
  T

--> or(%i)
 ans  =
  T

--> or(%nan)
 ans  =
  F           // %T attendu  => Bug 14522

--> // Projection à travers une dimension / selon une direction :
--> A = rand(2,5)<0.3
 A  =
  T F F F F
  F F T F F

--> or(A)
 ans  =
  T

--> or(A, "r")   // or(A, 1) est équivalent
 ans  =
  T F T F F

--> or(A, "c")   // or(A, 2) est équivalent
 ans  =
  T
  T

--> // Utilisation entre entiers encodés :
--> A = int16(grand(3,5,"uin",-10,10));
--> A(abs(A)<8) = 0
 A  =
  0  0  0 -9  0
  0 10  0  0  0
  0  0  0  0  9

--> or(A)
 ans  =
  T

--> or(A,1)
 ans  =
  F T F T T


--> // Avec une hypermatrice de nombres décimaux :
--> A = rand(3,4,2);
--> A(A<0.7) = 0
 A  =
(:,:,1)
   0.   0.       0.   0.
   0.   0.7065   0.   0.7227
   0.   0.       0.   0.8977
(:,:,2)
   0.       0.   0.       0.7901
   0.       0.   0.       0.9809
   0.9677   0.   0.7795   0.8187

--> or(A,3)
 ans  =
  F F F T
  F T F T
  T F T T


--> // Avec une matrice encodée creuse :
--> A = sprand(70,100, 0.001)
 A  =
(  70,  100) sparse matrix

(  18,  53)   0.7943
(  23,  96)   0.4361
(  38,  34)   0.9275
(  56,   1)   0.1622
(  69,  98)   0.3112

--> or(A, "r")
 ans  =
(  1,  100) sparse matrix

(  1,   1)  T
(  1,  34)  T
(  1,  53)  T
(  1,  96)  T
(  1,  98)  T

--> or(A, "c")
 ans  =
(  70,  1) sparse matrix

(  18,  1)  T
(  23,  1)  T
(  38,  1)  T
(  56,  1)  T
(  69,  1)  T

Voir aussi

  • | (distributif) — Binary OR between integers. Logical OR over/between booleans and numbers
  • and — ET logique entre éléments d'un tableau booléen ou numérique
  • ~ not — négation logique
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Feb 12 19:15:27 CET 2018