OU logique entre éléments d'un tableau booléen ou numérique
b = or(A) b = or(A, 'r') b = or(A, 'c') b = or(A, n)
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 :
|
Booléen simple si or(A)
est utilisée
sans option "r", "c", n
.
b
vaut alors
A
sont %F ou nuls.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° <= 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 :
or()
est
appliqué entre les lignes de A
.
Si A
est une matrice,
b
est alors une
ligne, avec
b(j) = or(A(:,j))
or()
est appliqué entre les
colonnes de A
.
Si A
est une matrice,
b
est alors une
colonne, avec
b(i) = or(A(i,:))
.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,:))
.
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
.
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 = T --> // 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