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 :

Extraire les maximums locaux d'un vecteur


Sujet :

MATLAB

  1. #1
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut Extraire les maximums locaux d'un vecteur
    salut a tous
    voila j'ai un tableau qui contient 207 valeurs et ce tableau correspond à une fonction de transfert dont la courbe fréquentielle contient 5 maxima , mon problème est que je voudrais extraire les valeurs de ces 5 maxima de ce tableau . J'ai essayé plusieurs possiblités avec des boucles mais je ne suis pas parvenu a mes fins. Si quelqu'un pouvait m'aider ca m'avancerait dans mon travail , encore une fois merci pour tout.

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Soit A ton "tableau" (je suppose qu'il s'agit en fait d'un vecteur).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [rMax,indMax]=max(A);
    %retourne : rMax la valeur du max, indMax le (ou les indices) de rMax dans A
    %donc tu en as déjà un ou plusieurs à ce stade.
    %pour trouver le suivant, tu enleves le ou les rMax de A :
    A(indMax) = [];
    %et tu recommences pour trouver le max suivant
    c'est ce que tu veux ?

  3. #3
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    salut
    merci pour votre réponse , mais malheureusement ca ne résoud pas mon problème, moi en fait le tableau que j'ai c'est les valeurs d'une fonction de transfert d'un système dans le domaine fréquentiel et le graphique de cette fonction a 5 max c'est à dire le graphique augmente, ensuite il arrive au premier max, ensuite il redescend jusqu'au min et il remonte pour aller au 2ème max ainsi de suite je voudrais extraire les valeurs de ces 5 max , merci

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Si je comprends bien, on pourrait réexprimer ton problème de la façon suivante :
    tu cherches les valeurs telles que la valeur précédente et la valeur suivante sont plus petites.
    si c'est ça, une tentative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    a=[1 2 1 3 2 1 2 4 2 1]
    maxA=[];
    indMaxA = [];
    for k=2:length(a)-1
        if a(k)>a(k-1) && a(k)>a(k+1)
            maxA(end+1) = a(k);
            indMaxA(end+1) = k;
        end
    end
    Sinon ce qui serait bien c'est que tu donnes un exemple du "tableau" (le terme exact en langage matlabien étant vecteur) que tu as en entrée.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Une forme vectorisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a=[10 1 2 1 3 2 1 2 4 2 1 5]
     
    aa=[-inf a -inf];
    aa=diff(aa);
    aa=sign(aa);
    idx=diff(aa)<0; % ou pour récupérer les indices idx=find(diff(aa)<0);
    a(idx)
     
    % ou plus compacte :
     
    aa=[-inf a -inf];
    idx=diff(sign(diff(aa)))<0; % ou pour récupérer les indices idx=diff(sign(diff(aa)))<0;
    a(idx)

  6. #6
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    merci à vous tous
    en particulier un grand merci à vous caro
    le code que vous m'avez donné m'a aidé
    maintenant je voudrais faire appel à ces max et les afficher sur l'interface de mon simulateur dans des cases , j'ai 5 casess et je voudrais afficher ces max dans l'ordre des max de la fonction de transfert que j'ai dans ces cases , encore une fois et je ne cesse de le dire mille merci pour votre aide .

  7. #7
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Attention, ma solution n'est pas tout à fait complète : celle de Dutmatlab prend en compte en plus les cas où les max se trouvent aux extrémités (comme dans son exemple).
    Pour ton histoire de case s'il y a une question il faudrait essayer de la formaliser un peu mieux et dans un nouveau sujet.

  8. #8
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    merci pour votre aide c'est bon grace a vous j'ai pu trouver mon chemin encore une foi merci et bonne continuation .

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/05/2015, 09h05
  2. Extraire les vecteurs d'une matrice
    Par Goffer dans le forum OpenCV
    Réponses: 5
    Dernier message: 15/06/2010, 17h19
  3. Réponses: 5
    Dernier message: 10/03/2008, 09h50
  4. colorer les maximums locaux
    Par inès83 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 29/02/2008, 09h51
  5. Extraire les vecteurs à partir d'une matrice
    Par samia_6 dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/10/2007, 23h06

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