members
dénombre (et localise) dans un tableau chaque élément ou ligne ou colonne d'un autre tableau
Séquence d'appel
[nb [,loc]] = members(N, H) [nb [,loc]] = members(N, H, "last") [nb [,loc]] = members(N, H, "rows"|"cols") [nb [,loc]] = members(N, H, "rows"|"cols", "last") [nb [,loc]] = members(N, H, "rows"|"cols", "shuffle") [nb [,loc]] = members(N, H, "rows"|"cols", "shuffle", "last")
Paramètres
- N
Matrice ou hypermatrice dont les éléments, lignes ou colonnes doivent être recherchés. Il peut s'agir de booléens, d'entiers encodés, de nombres décimaux réels ou complexes, de polynômes ou de textes. En mode "rows" ou "cols", l'hypermatrice n'est pas acceptée. Un élément donné (ou une ligne ou colonne) peut apparaitre plusieurs fois dans
N.- H
Matrice ou hypermatrice scrutée, de même type que
N. En mode "rows" / "cols", l'hypermatrice n'est pas acceptée, etNetHdoivent avoir le même nombre de colonnes / lignes.- Options :
Une à 3 options peuvent être indiquées après H, sans ordre particulier :
- "last"
Lorsque la localisation dans
Hdes éléments deNest retournée via le paramètre de sortieloc, par défaut les positions des 1ères occurences dansHsont retournées, élément par élément de N. Si"last"est indiqué, les positions retournées sont celles des dernières occurences dansH.- "rows", "cols"
Par défaut, chaque élément individuel
N(i, j, ..)deNest recherché dansH. Si"rows"est indiquée, chaque ligne deNest recherchée parmi les lignes deH. De même, si"cols"est indiquée, chaque colonne deNest recherchée parmi les colonnes deH..- "shuffle"
En mode
"rows"ou"cols", par défaut l'ordre des éléments d'une ligne ou d'une colonne est pris en compte : par exemple,[ 7 3 5 ]dansNet[ 3 5 7]dansHne correspondront pas. Lorsque l'option"shuffle"est utilisée, toute permutation de --disons--[3 5 7]sera reconnue dans H comme correspondant à la ligne[3 5 7]dansN. Cette option est ignorée pour les polynômes.
- nb
En mode normal :
nb(i, j, ..)(décimaux) retourne le nombre d'occurences dansHdeN(i, j, ..).nbetNont le même format. SiHest vide [], une matrice de zéros est retournée. SiNest vide, la matrice vide[]est retournée.En mode
"rows"ou"cols":nbest un vecteur ligne de décimaux avec autant d'élements queNa de lignes ou colonnes.nb(i)retourne le nombre d'occurences dansH(1:$, :)deN(i, :)(ou deN(:, i)dansH(:, 1:$)).- loc
En mode normal :
locetNont le même format.loc(i, j, ..)retourne le n°(linéarisé) dansHle plus petit auquelN(i, j, ..)advient :H(loc(i, j, ..))==N(i, j, ..). Si l'option"last"est utilisée, le n° le plus grand vérifiant la même condition est retourné à la place. SiN(i, j, ..)n'est pas présent dansH,loc(i, j, ..)est mis à0.En mode
"rows"ou"cols":locest un vecteur ligne de décimaux, avec autant d'éléments queNa respectivement de lignes ou de colonnes.loc(i)retourne le n° de la 1ère ligneH(loc(i), :)identifiable àN(i, :)(ou le n° de la 1ère colonneH(:, loc(i))identifiable àN(:, i)). Si l'option"shuffle"est en outre utilisée, l'ordre des éléments deN(i, :)est ignoré et toutes les permutations deN(i, :)identifiables en lignes deHsont considérées.
Description
nb = members(N, H [,"rows"|"cols"]) retourne le nombre d'occurences de chaque élément ou ligne ou colonne de N identifiables dans H. Si aucune correspondance n'est trouvée, 0 est retourné pour le composant considéré.
La position dans H de la 1ère (par défaut) ou de la dernière (avec "last") occurence des N(i, j, ...) peut être obtenue via la seconde variable de sortie loc.
Si des lignes ou colonnes correspondantes sont recherchées, l'ordre de leurs éléments peut être ignoré en utilisant l'option "shuffle".
Les valeurs spéciales %inf et -%inf sont admises dans N comme dans H.
%nan est toujours admis dans N, mais pas dans H en mode normal.
En mode normal (élément par élément), members(..) utilise la fonction dsearch(..) afin de traiter efficacement les tableaux de booléens, d'entiers encodés (de tous formats : 8-16-32 bits signés ou non), ou de nombres réels. Le traitement des tableaux de nombres complexes, de polynômes ou de textes est réalisé par un algorithme plus lent et gourmand en mémoire vive. Lorsque le traitement est long, une jauge de progression est affichée.
Exemples
N = [1 8 4 5 2 1]; H = [9 7 4 2 1 4]; [nb, loc] = members(N, H, "last") // Retourne nb = [1 0 2 0 1 1] : par exemple, 4 apparait 2 fois dans H. // Et loc = [5 0 6 0 4 5] : la dernière occurence de 4 figure en 6ème position dans H [nb, loc] = members(N, H) // Retourne loc = [5 0 3 0 4 5] : la 1ère occurence de 4 figure en 3ème position dans H // avec des hypermatrices. Avec N et H déclarées ci-dessus : N = matrix(N, [3 1 2]); H = matrix(H, [3 1 2]); [nb, loc] = members(N, H, "last") // Avec des entiers encodés : N = int8(grand(3, 2, "uin", -5, 5)); H = int8(grand(4, 4, "uin", -5, 5)); [nb, loc] = members(N, H) // Avec des polynômes (à coefficients éventuellement complexes) : z = %z; N = [z (1-z)^2 ; -4 %i*z ]; H = [2 %i*z -z 3-z z z^3 z]; [nb, loc] = members(N, H) // Avec des matrices de textes : N = [ "Hi" "Hu" "Allo"]; H = [ "Hello" "Bonjour" "Allo" "Holà" "Allo" "Hallo" "Hi" "Hé" "Salud" ]; [nb, loc] = members(N, H, "last") // Recherche de lignes : H = [ 3 3 0 4 1 0 2 0 3 0 1 4 3 4 3 0 4 1 3 1 0 ]; N = [ 1 2 3 0 1 4 3 0 3 4 1 0 2 0 2 ]; N, H [nb, loc] = members(N, H, "rows") [nb, loc] = members(N, H, "rows","last") [nb, loc] = members(N, H, "rows","shuffle") // [4 1 0], [0 1 4] et [0 4 1] sont associées // Recherche de colonnes, en utilisant N et H définies ci-dessus : N = N.', H = H.' [nb, loc] = members(N, H, "cols", "shuffle")
Voir aussi
- dsearch — répartit, localise et compte les éléments d'une matrice en catégories données
- intersect — éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon
- grep — find matches of a string in a vector of strings
- find — donne la position des éléments %T ou non nuls d'un tableau booléen ou numérique.
- vectorfind — locates occurences of a (wildcarded) vector in a matrix or hypermatrix
Historique
| Version | Description |
| 5.5.0 | Introduction de la fonction members() |
| Report an issue | ||
| << gsort | Chercher et trier | vectorfind >> |