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 :

[find] Rechercher un ensemble de valeurs dans un vecteur


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Points : 26
    Points
    26
    Par défaut [find] Rechercher un ensemble de valeurs dans un vecteur
    Bonjour à tous
    Je souhaite trouver les index de plusieurs valeurs (issues d'un vecteur) dans un autre vecteur, pour les supprimer par la suite.
    Par exemple :
    a = [1,3,2,5,4,6]
    b = [1,6,5]
    Je souhaite obtenir les index de b dans a, ici idx=[1,6,4]
    Pour ensuite pouvoir les supprimer a(idx)=[]

    J'utilise la boucle for suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for k=1:length(b) 
    idx=find(b(k)==a); 
    a(idx)=[]; 
    end
    Elle fonctionne très bien, mais n'auriez vous pas une méthode plus efficace, à base de find par exemple.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Voir la fonction ismember ou encore mieux setdiff
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    ismember me donne soit le booléen de la présence ou non des éléments de A dans B, soit la valeur de ces éléments, mais pas l'index. Donc ce n'est pas ce que je recherche

    setdiff me donne soit la valeur des éléments de A qui ne sont pas contenus dans B, soit leur index dans A. Je te remets l'exemple MatLab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A = [3 6 2 1 5 1 1]; B = [2 4 6];
    C = setdiff(A,B)
     
    >> C =
     
         1     3     5
    Je ne trouve pas de fonction qui renvoie l'index des éléments de A contenus dans B

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    AH mais par contre la 3éme sortie de intersect me renvoie ces index
    Merci pour le support Dut, j'ai trouvé dans les fonctions connexes à ismember

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

Discussions similaires

  1. Recherche de plage de valeurs dans liste de valeurs
    Par klowba dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/06/2007, 14h02
  2. Rechercher la plus proche valeur dans un tableau
    Par neoMatrix dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/05/2007, 11h45
  3. rechercher la plus proche valeur dans un tableau ?
    Par Slumpy dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/04/2007, 14h06
  4. Programme shell pour rechercher un ensemble de lignes dans un fichier
    Par loukili81 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/11/2006, 13h27
  5. Réponses: 11
    Dernier message: 21/03/2006, 17h57

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