Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
intersect
éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon
Syntaxe
M = intersect(a, b) M = intersect(a, b, orient) [M, ka] = intersect(..) [M, ka, kb] = intersect(..)
Arguments
- a, b
- vecteurs, matrices ou hypermatrices d'entiers encodés, de nombres réels ou
complexes, ou de texte.
aetbdoivent ê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. - orient
- indicateur de traitement par colonnes ou lignes. Valeurs possibles :
1 ou "r", 2 ou "c". Ne peut pas être utilisé lorsque
aou/etbest une hypermatrice. - M
Matrice du type de
aetb.- Sans
orient:Mest un vecteur ligne. - Avec
orient="r"|1:Mest une matrice empilant les lignes communes àaetb. - Avec
orient="c"|2:Mest une matrice concaténant les colonnes communes àaetb.
- Sans
- ka
- Vecteur ligne d'indices dans
a. - kb
- Vecteur lignes d'indices dans
b.
Description
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
- pour les nombres complexes : par modules croissants, puis par phases croissantes.
- pour le texte : par ordre alphabétique.
![]() | 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).
Lignes ou colonnes en commun
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.
Exemples
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 intersect([1 -2 %nan 3 6], [%nan 1:3])
--> %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.
Voir aussi
- members — dénombre (et localise) dans un tableau chaque élément ou ligne ou colonne d'un autre tableau
- unique — extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice
- gsort — sorting by quick sort algorithm
- union — extrait les composantes distinctes issues de l'union de deux vecteurs
Historique
| Version | Description |
| 6.1.0 | Les nombres complexes sont désormais acceptés. |
| Report an issue | ||
| << Ensembles | Ensembles | perms >> |
