éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon
M = intersect(a, b) M = intersect(a, b, orient) [M, ka] = intersect(..) [M, ka, kb] = intersect(..)
a
et b
doivent
être du même type de données, mais ont des tailles indépendantes.
Pour les données texte, les caractères UTF sont admis.
a
ou/et b
est une hypermatrice.
Matrice du type de a
et b
.
orient
: M
est un vecteur
ligne.orient="r"|1
: M
est une
matrice empilant les lignes communes à a
et
b
.orient="c"|2
: M
est une
matrice concaténant les colonnes communes à a
et
b
.a
.
b
.
intersect(a,b)
produit un vecteur ligne des éléments dédoublonnés
présents à la fois dans les tableaux a
et b
,
triés en ordre croissant
![]() | Deux éléments NaN étant toujours considérés comme différents, NaN ou les lignes ou
colonnes en contenant ne seront jamais présents dans le résultat M . |
[M, ka, kb] = intersect(a,b)
fournit en outre les vecteurs lignes
ka
et kb
des indices dans a
et b
des éléments communs rencontrés à leur première position,
tels que M=a(ka)
and M=b(kb)
.
Lorsque l'option orient
est utilisée, la comparaison entre
a
et b
est réalisée en considérant leurs lignes
ou leurs colonnes dans leur entier.
intersect(a,b,"r")
ou intersect(a,b,1)
fournira
la matrice des lignes (sans doublons) présentes à la fois dans a
et
dans b
, triées en ordre lexicographique croissant.
Lorsque a
et b
n'ont pas le même nombre de
colonnes, [] est retourné sans comparer aucun élément.
[M,ka,kb]=intersect(a,b,"r")
fournit en outre les vecteurs
ka
et kb
des indices minimaux des lignes communes,
indices respectivement dans a
dans b
. On a alors
M=a(ka,:)
et M=b(kb,:)
.
intersect(a,b,"c")
ou intersect(a,b,2)
réalise
la même chose sur les colonnes.
A = grand(3, 3, "uin", 0, 9) B = grand(2, 4, "uin", 0, 9) intersect(A, B) [N, ka, kb] = intersect(A,B); ka, kb | ![]() | ![]() |
--> A = grand(3, 3, "uin", 0, 9) A = 0. 6. 4. 6. 6. 6. 2. 7. 9. --> B = grand(2, 4, "uin", 0, 9) B = 1. 8. 0. 2. 6. 2. 2. 1. --> intersect(A, B) ans = 0. 2. 6. --> [N, ka, kb] = intersect(A,B); --> ka, kb ka = 1. 3. 2. kb = 5. 4. 2.
Dans l'exemple ci-dessus, on notera que 6 est présent quatre fois dans A, aux indices [2 4 5 8]. Seule la position d'indice minimal 2 est donnée dans ka. Même situation pour 2 dans B.
La valeur NaN (Not-a-Number) ne peut jamais figurer dans le résultat :
--> %nan == %nan ans = F --> intersect([1 -2 %nan 3 6], [%nan 1:3]) ans = 1. 3.
intersect() peut aussi traiter des caractères ou du texte. Scilab sait traiter les textes encodés en UTF. Voici un exemple avec du texte en arabe, afin d'obtenir les caractères arabes communs à deux phrases :
--> A = strsplit("هو برنامج علمي كبير ""Scilab""")' A = !ه و ب ر ن ا م ج ع ل م ي ك ب ي ر " S c i l a b " ! --> B = strsplit("فهو حر ومفتوح")' B = !ف ه و ح ر و م ف ت و ح ! --> intersect(A,B) ans = ! ر م ه و !
Lignes ou colonnes communes à deux matrices : l'exemple suivant extrait les colonnes communes à deux matrices d'entiers signés encodés sur un octet :
A = int8(grand(3,5,"uin",0,1)) B = int8(grand(3,9,"uin",0,1)) [M,ka,kb] = intersect(A, B, "c"); M, ka, kb | ![]() | ![]() |
--> A = int8(grand(3,5,"uin",0,1)) A = 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 --> B = int8(grand(3,9,"uin",0,1)) B = 1 0 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 --> [M,ka,kb] = intersect(A, B, "c"); --> M, ka, kb M = 0 1 1 0 0 1 0 1 0 ka = 1. 5. 3. kb = 2. 3. 4.
Version | Description |
6.1.0 | Les nombres complexes sont désormais acceptés. |