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 :

nombre d'occurence d'une valeur dans un vecteur [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut nombre d'occurence d'une valeur dans un vecteur
    Bonjour à tous,

    Voilà mon problème: j'ai un vecteur du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A=[1 1 1 1 2 2 3 4 4 5 5 5]
     
    A =
     
         1     1     1     1     2     2     3     4     4     5     5     5
    ce que je voudrai, c'est arriver à retrouver la valeur qui est la plus représentée dans le vecteur (donc 1 dans l'exemple)

    J'aimerai surtout trouver un moyen de faire ça d'une façon propre et optimisée. J'ai pensé à un truc à base de plusieurs find du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vect(1)=length(find(A==1));
    vect(2)=length(find(A==2));
    ...etc
    mais c'est pas vraiment très élégant et surtout assez long je pense.

    J'ai rien trouvé sur internet qui réponde à ma question... donc si vous pouvez m'aider, ça serait sympa.
    J'ai aussi du mal à croire qu'il n'y ait pas une fonction qui compte le nombre d'occurrence d'une valeur sous matlab, mais là non plus, j'ai rien trouvé..

    D'avance merci.
    Kévin

  2. #2
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Ta question est taguée"débutant" pourtant la réponse est un peu fine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A=[1 1 1 1 2 2 3 4 4 5 5 5]
    B = diff([0, A])
    C = find(B>0)
    D = diff(C)
    EtLeGagnantEst = find(D==max(D))
    EDSIT : Attention : j'ai suivi le pattern de ton exemple donc avec des nombres consécutifs et croissants. Si c'est pas le cas :


  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 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
    Ma solution préférée () utilise UNIQUE et HISTC => Trouver la valeur apparaissant le plus dans une matrice

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Ok, merci à tous les deux pour vos réponses.
    J'ai finalement opté pour la méthode de Dut, ce qui me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    U=unique(A);
    n=histc(A,U);
    win=U(find(n==max(n)));
    Encore merci

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kevin07 Voir le message
    Ok, merci à tous les deux pour vos réponses.
    J'ai finalement opté pour la méthode de Dut, ce qui me donne:

    Dut, je te déteste !

  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
    Citation Envoyé par kevin07 Voir le message
    win=U(find(n==max(n)));[/code]
    On n'utilise pas FIND dans ce cas :

    se simplifie en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [pasbesoin,idx] = max(n);
    ou pour les puristes :
    Citation Envoyé par ol9245 Voir le message
    Dut, je te déteste !
    Y'a pas de quoi !

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

Discussions similaires

  1. [XL-2010] Compter le Nombre d'occurences d'une valeur dans une colonne
    Par smer38 dans le forum Excel
    Réponses: 3
    Dernier message: 10/06/2014, 18h48
  2. [XL-2003] Récupérer le nombre d'occurence d'une valeur
    Par Contact2012 dans le forum Excel
    Réponses: 4
    Dernier message: 04/10/2010, 18h51
  3. [Toutes versions] Calculer le nombre d'occurence d'une valeur de cellule suivant condition
    Par shaun_the_sheep dans le forum Excel
    Réponses: 3
    Dernier message: 05/05/2010, 10h11
  4. Réponses: 3
    Dernier message: 28/12/2007, 13h39
  5. Réponses: 4
    Dernier message: 07/09/2006, 15h02

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