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

Signal Discussion :

faire une croix sur les pics dans une figure


Sujet :

Signal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 203
    Points : 68
    Points
    68
    Par défaut faire une croix sur les pics dans une figure
    Le rôle de la fonction "findpeaks" est de trouver des crêtes avec l'interpolation quadratique facultative [ K, v]=(x, m, w)

    Entrées: X est le signal d'entrée
    M est mode:
    ' q ' exécute l'interpolation quadratique
    ' v ' trouve des vallées au lieu des crêtes
    ' W ' est la tolérance de largeur; on éliminera une crête s' il y a une crête plus élevée dans des échantillons de +-w

    Sorties: K sont les locations maximaux dans X

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [k,v]=findpeaks(x,'q',60);
    figure(1);plot((fe*(1:nfft-1)/nfft),x), hold on , plot(k,v,'r*'),hold off
    Dans mon cas; le valeur k n’est pas sur le pic de la figure 1. car on a plot (abscisse,x) alors que dans la fonction findpeaks on a que x donc il n’existe pas de correspondance entre les valeurs des crêtes détectés par la fonction findpeaks et les pics donnés par la figura 1.
    Ma question existe t’il une solution.
    Merci

  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 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
    As-tu déjà lu cette discussion Détection de pics ?
    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)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 203
    Points : 68
    Points
    68
    Par défaut
    Salut; j'ai bien créer les croix sur les pics dans ma figure à l'aide de votre fonction "détection pic".
    Mais, je veux voir sur ma figure des croisx que sur les pics qui ont une amplitude >0.6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if y(idx)>0.6
    figure
    plot(x,y,'b-',x(idx),y(idx),'r*')
    end
    ce bout de code avec cette condition n' a pas donné de solution:
    J'espère que je suis clair
    Merci A+

  4. #4
    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
    Citation Envoyé par jena Voir le message
    voir sur ma figure des croisx que sur les pics qui ont une amplitude >0.6
    Il suffit d'ajouter une condition supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    y = rand(1,15);
    x = 1:15;
    
    sa = sign(diff([-inf y]));
    sb = sign(diff([-inf y(end:-1:1)]));
    sb = sb(end:-1:1);
    
    idx = (sa==1 & sb==1) & y>0.6;
    
    figure
    plot(x,y,'b-',x(idx),y(idx),'r*')
    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)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 203
    Points : 68
    Points
    68
    Par défaut
    Salut;
    Maintenant je veux que le croix ne s'affiche dans la figure que sur le premier pic.
    donc qu'est ce que je doit ajouter comme condition ou bien dans le plot
    Merci

  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 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
    Il suffit de ne prendre que le premier élément contenu dans le vecteur idx.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idx = find((sa==1 & sb==1) & y>0.6,1,'first');
    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)

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/03/2015, 22h42
  2. Réponses: 4
    Dernier message: 24/02/2014, 10h16
  3. [XL-2010] Trier des valeurs dans une feuille et les mettre dans une autre feuille
    Par maharo1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2011, 15h02
  4. [Toutes versions] Recherche de données dans une feuille pour les copier dans une autre
    Par mattdogg97 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/02/2011, 14h22
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

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