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 :

Déterminer le 1er max


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 1
    Par défaut Déterminer le 1er max
    Je cherche une fonction qui me permette de déterminer le 1er maximum de courbes (définies par une matrice à 2 colonnes abcisses ordonnées, notée A ici) qui ont plusieurs pics (le 1er max n'est pas toujours le plus elevé). J'aimerais utiliser la dérivée et repérer les zéros, mais cela ne fonctionne pas avec ce que j'ai écrit:

    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
    dA=diff(A);
     
    k=2;
       while dA(k,2)~=0
           k=k+1;
       end
       if   A(k-1,2)>A(k,2)
    ffund=A(k,1);
    Afund=A(k,2);
    ch4=num2str(ffund)
       else
           k=k+1
           while dA(k,2)~=0;
           k=k+1;
           end
           ffund=A(k,1);
        Afund=A(k,2);
        ch4=num2str(ffund)
       end
    Si quelqu'un connaît une méthode plus efficace...
    Merci

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    utilise les balises [ code] et [ /code] stp, là ça pique les yeux .

    En fait je ne comprends rien à ton code

  3. #3
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    c'est ça que tu veux faire ?

    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
     
    dA =
     
         1     1
         2     2
         3     3
         4     4
         5     5
         6     5
         7     4
         8     3
         9     2
        10     1
     
    >> diff(dA)
     
    ans =
     
         1     1
         1     1
         1     1
         1     1
         1     0
         1    -1
         1    -1
         1    -1
         1    -1
     
     
    >> find(diff(dA(:,2))==0)
     
    ans =
     
         5

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Mathusalem là ca marche parce que tu as deux 5 consécutif dans ta seconde colonne.

    helokd, regarde la fonction gradient. Elle pourrait t'aider je pense.

  5. #5
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    très juste !

    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
    >> dA
     
    dA =
     
         1     1
         2     2
         3     3
         4     4
         5     5
         6     4
         7     3
         8     2
         9     1
        10     0
     
    >> tmp = find(diff(dA(:,2))==-1)
     
    tmp =
     
         5
         6
         7
         8
         9
     
    >> first = tmp(1)
     
    first =
     
         5
    et comme ça ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    oui, "ça me plait"

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/08/2009, 02h06
  2. déterminer la date du 1er mardi du mois
    Par CouBiac79 dans le forum Linux
    Réponses: 5
    Dernier message: 18/07/2009, 13h58
  3. Déterminer la lg max d'un VARCHAR2()
    Par Betamax dans le forum PL/SQL
    Réponses: 4
    Dernier message: 19/04/2009, 08h09
  4. [Débutant] Déterminer la valeur max d'un signal
    Par tiya17 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 29/08/2008, 14h26
  5. Déterminer 1er et dernier jour du trimestre
    Par jackfred dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/08/2007, 15h26

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