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 :

selectionner des valeurs précises dans un vecteur [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut selectionner des valeurs précises dans un vecteur
    Bonjour à tous,

    Alors voilà, j'ai un nombre précis en tête (disons 15), et je souhaite sélectionner toutes les valeurs dans mon vecteur qui soit inférieur à 15 (mais il faut que la valeur suivante soit elle aussi inférieur à 15).

    Ex: v=[ 45 10 2 8 32]

    Ici je suis intéresser par le 10 et le 2 mais pas par le 8 (car le 8 est suivi par 32 > 15).

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Salut

    En reprenant ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    v=[ 45 10 2 8 32];
    idx = find(v<15);
    sortie = v(idx(1:end-1));
    Mais je crains qu'il soit difficilement généralisable...

    Peux-tu être plus explicite par rapport à tes données ?

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  3. #3
    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 : 52 884
    Points
    52 884
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    >> v = [45 10 2 8 32]
     
    v =
     
        45    10     2     8    32
     
    >> idx = v<15 & [v(2:end)<15 1]
     
    idx =
     
         0     1     1     0     0
     
    >> v(idx)
     
    ans =
     
        10     2
    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)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci "dut" le code marche.

    J'ai réussi à l'appliquer dans pas mal de situations sauf une:

    Je souhaite toujours sélectionner les valeurs inférieur à 15 mais maintenant seulement celle qui sont précédées par une autre valeur <15.

    En reprenant l'exemple; v = [45 10 2 8 32]
    Ici je suis intéressé par le 2 et le 8 et non par le 10 (car le terme qui précède: 45 >15).

    Merci d'avance!

  5. #5
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Il suffit de reprendre la même idée que précédemment (très bonne astuce d'ailleurs! ) et de l'adapter un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    v = [45 10 2 8 32 5 7 16]
     
    v =
     
        45    10     2     8    32     5     7    16
     
    >> idx = [v 1]<15 & [0 v(1:end)<15]
     
    idx =
     
         0     0     1     1     0     0     1     0     0
     
    >> idx=idx(1:end-1)
     
    idx =
     
         0     0     1     1     0     0     1     0
     
    >> v = [45 10 2 8 32 5 7 14]
     
    v =
     
        45    10     2     8    32     5     7    14
     
    >> idx = [v 1]<15 & [0 v(1:end)<15]
     
    idx =
     
         0     0     1     1     0     0     1     1     1
     
    >> idx=idx(1:end-1)
     
    idx =
     
         0     0     1     1     0     0     1     1
    Matlab 7.14.0.739 (R2012a)
    C/C++, python, R, SQL, Pig, MR

    Ma philosophie: Ne rien faire, mais le faire bien.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Cool, cela fonctionne nickel et j'ai bien capté la démarche.
    Merci bien.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2013, 15h18
  2. [Batch] Selectionner des valeurs précises dans un fichier texte
    Par Slevihn dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 09/04/2013, 16h54
  3. [Débutant] le rang des valeurs répétées dans un vecteur
    Par Minouchka dans le forum MATLAB
    Réponses: 4
    Dernier message: 21/03/2010, 18h02
  4. Lire des valeurs spécifiques dans un vecteur
    Par HOLLY dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/06/2008, 14h04
  5. Réponses: 6
    Dernier message: 14/11/2007, 15h51

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