IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

repérer les éléments identiques dans plusieurs vecteurs


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Points : 90
    Points
    90
    Par défaut repérer les éléments identiques dans plusieurs vecteurs
    Bonjour,
    j'ai plusieurs vecteurs (disons 4, mais il peut y en avoir plus) de tailles différentes. Chaque vecteur contient des nombres entiers quelconques.
    J'aimerais former un 5ème vecteur contenant tous les nombres entiers présents dans chacun des 4 vecteurs .
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    V1=[1 2 3 4];
    V2=[1 2 5 6];
    V3=[1 2 7 8];
    V4=[1 2 9 10];
    2 entiers apparaissent dans chacun des 4 vecteurs: 1 et 2.
    Donc mon 5ème vecteur est V5=[1 2]

    Je ne sais pas comment faire! Pouvez vous m'aider SVP?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Utilise INTERSECT plusieurs fois.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    Merci Caro-Line.
    Je dois donc quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C1=intersect(V1,V2);
    C2=intersect(C1,V3);
    C3=intersect(C2,V4);
    mais si j'ai beaucoup de vecteurs, ça peut devenir chi..nt à écrire.

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Si tu nommes bien tes variables il suffit de faire une boucle.
    Comment créer des variables nommées A1, A2, A3, ...,AN ?

    Tu peux aussi créer une fonction qui prendrait tous tes vecteurs en arguements avec un peu de récursivité dedans (penser à s'arrêter quand l'intersection devient vide)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Une alternative en concaténant tous les vecteurs et en ne conservant que les valeurs qui apparaissent autant de fois qu'il y a de vecteurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    V = [1 2 3 4 ; 1 2 5 6 ; 1 2 7 8 ; 1 2 9 10];
     
    N = size(V,1); % nombre de vecteurs
     
    [uV,a,b] = unique(V(:));
     
    n = histc(b,1:max(b));
     
    idx = (n == N); % indexage logique
     
    uV(idx)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2013, 15h08
  2. Réponses: 7
    Dernier message: 05/02/2010, 18h55
  3. Trouver les éléments identiques dans deux listes
    Par ricololo dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/01/2009, 13h25
  4. comment compter les entrées identiques dans une requete?
    Par Chico_Latino dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo