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 :

Recherche de maximum


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Recherche de maximum
    Bonjour,

    Je suis à la recherche de plusieurs maximum dans un même vecteur. Par exemple prenons le vecteur a :
    a = [0 1 2 4 6 9 12 11 8 4 2 2 4 6 7 9 7 5 4];
    Je souhaite qu'il me sorte les 2 max locaux 12 et 9 avec leurs indices (ce qui doit être simple quand on a les max).
    Mais je ne veux pas qu'il me sorte le 11 qui est certes supérieur à 9 mais qui n'est pas un max local.
    Une écriture matricielle serait préférable vu qu'il y a beaucoup de max.

    Merci d'avance

  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 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Tu devrais trouver la solution dans cette discussion : Détection de pics

  3. #3
    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
    Ma condition serait :

    pour i>2
    Si x(i) est supérieur à x(i-1) et x(i+1)

    et pour i=1
    Si x(i) est supérieur à x(i+1)

    pour poursuivre ta recherche, tu dois tout simplement faire tourner une boucle sur toutes les données de ton tableau.

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci mais en fait mon problème est pointé dans la réponse de FR119492 : mon signal est bruité et il lui arrive d'avoir des pics parasites du style :
    a = [0 1 2 4 6 9 12 11 8 4 5 2 2 4 6 7 9 7 5 4];
    J'ai essayé la fonction smooth qui donne un résultat correct mais elle ne filtre pas les "gros" pics parasites.
    Existe-t'il une autre fonction du même genre qui pourrait carrement fitter la courbe et de laquelle on pourrait en tirer le max?
    Merci

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Pour faire un filtrage, c'est-à-dire séparer le signal du bruit, tu dois avoir une définition claire de ce qui est du signal et ce qui est du bruit. Sans une telle définition rigoureuse, tu obtiendras n'importe quoi.

    Jean-Marc Blanc

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Oui... La est tout le problème de l'expérimental. Je sais uniquement que j'ai des cycles qui se reproduisent plus ou moins régulièrement. En admettant que j'ai 1000 points par cycles (dont 1 max uniquement), si il y a petit blocage/bug/je ne sais quoi, je peux me retrouver avec 1 ou 2 points qui apparaitront à matlab comme un max (supérieur aux i-1 et i+1, même si les points sont lissés). Une idée serait de considérer la valeur de ce max par rapport à la valeur max approximative qui serait attendu (si on attend 10 +/- 0,5 et qu'on trouve un max à 4, on le vire). Je viens d'y penser en l'écrivant. J'essaie ça.

    Merci

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Salut

    J'ai fait un programme de calibration qui fittait des données expérimentales avec beaucoup de bruit. Je m'en suis sorti en calculant le centre des pics par la méthode des barycentres, en imposant un seuil.

    Si tu n'as pas trop de bruit, il y a une autre méthode qui consiste à ne pas considérer chaque points de tes data, mais un point tout les 10, 20, ... points (c'est à toi de voir ça), en répérant le changement de signe de l'intégrale.

    Bon courage.

Discussions similaires

  1. Recherche de maximum
    Par beegees dans le forum Cobol
    Réponses: 4
    Dernier message: 22/07/2008, 19h46
  2. recherche du maximum
    Par benyamin dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 17/04/2008, 14h37
  3. Recherche du maximum d'une série de cellule
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2008, 10h13
  4. Réponses: 6
    Dernier message: 02/04/2007, 14h20
  5. Recherche du maximum
    Par tchraad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2005, 17h44

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