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

Python Discussion :

Calcul largeur pic à mi-hauteur (fwhm)


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut Calcul largeur pic à mi-hauteur (fwhm)
    Bonjour,

    J'ai un petit souci concernant mon programme Python : je dois, à partir de 5 courbes et 5 tableaux de données correspondant écrire un programme qui me calcule la largeur à mi-hauteur des pics. J'ai réussi à tracer mes courbes, trouver le max en ordonnées et x correspondant mais je ne vois pas comment faire pour la largeur des pics à mi-hauteur..
    Si quelqu'un a une idée ?

    Merci beaucoup.

    Nom : graphresonance.png
Affichages : 3668
Taille : 47,0 Ko

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    C'est plus un problème mathématique que tu as qu'un problème de Python je pense.

    Tes courbes sont des gaussiennes et c'est dit dans l'énoncé de ton exercice non ?

    Si oui, dans ce cas chaque gaussienne s'écrit en fonction de 3 paramètres (le centre, la hauteur, et l'écart-type (largeur à mi hauteur)). Si tu en as 2 sur les 3, suffit de prendre l'équation de la gaussienne et d'écrire le paramètre qu'il te manque en fonction du reste. Et là tu prends n'importe quel point du graphique et ça te donnera le paramètre manquant.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    Bonsoir Ig_53,

    Non ce n'est pas spécifié dans mon exercice mais je devais montrer le caractère non linéaire de mes résultats. A priori, ce sont bien des gaussiennes.
    Justement le souci est que je n'ai pas les équations de mes courbes, n'y a-t-il pas une façon d'écrire un algorithme qui, a partir de mes valeurs max me calculerait directement la largeur à mi-hauteur ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Si l'exercice est de montrer la non linéarité tu n'as pas besoin de cette artillerie. Pour chaque courbe tu prends juste 3 points, et s'ils ne sont pas alignés alors ce n'est pas linéaire !

    Autrement, il y a des modules pythons qui sont capables de "fitter" une liste de points. Mais ca part d'un à priori sur la nature de la fonction (typiquement une gaussienne). Tu peux regarder du côté de scikit-learn si ca t'intéresse. L'objet de ton exo n'est surement pas là, car ce sont des notions avancées ca...

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    En fait cet exercice à un objectif principal qui est de créer un algorithme unique sous python pour déterminer l’amplitude maximale atteinte (ainsi
    que sa position en fréquence) et la largeur du pic à mi-hauteur.
    Pour ce qui est d'approximer la courbe je pourrais le faire à l'aide de la méthode de Simpson ou de l'interpolation de Lagrange par exemple mais ça n'est pas le but..

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 242
    Par défaut
    Salut,

    Je ne suis pas sur d'avoir compris la demande mais vu que tu connais le maximum d'une courbe, tu divises cette valeur par 2. On va dire que cette valeur devient un seuil.

    Ensuite tu te serts de ce seuil pour trouver les 2 valeurs, dans le tableau, qui s'en approchent le plus. Il y a deux valeurs puisque la courbe de gauss est symétrique, une valeur se trouve sur la pente montante et l'autre sur la pente descendante.

    Une fois que tu as trouvé ces 2 valeurs et donc leurs positions dans le tableau, il suffit de compter le nombre d'echantillons entre les deux. En d'autres mots, tu comptes le nombre de case entres les deux valeurs.

    Tu multiplies ce nombre d'échantillons (ou de case) par la fréquence d'échantillonnage et ça te donne le temps (ou la fréquence) entre les deux valeurs à mi hauteur de la courbe.

    Ps: étant donné que l'axe X de tes courbes est en fréquence, j'en déduis que tu connais le temps entres le échantillons, donc la fréquence d'échantillonnage.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    Bonjour,

    Merci pour ta réponse, j'ai bien compris le principe de ta méthode, c'est la plus efficace.
    Si j'ai bien compris :
    - calculer valmax/2
    - trouver la valeur de la liste la plus proche de val max/2
    - déduire les deux ordonnées (valeur pente ascendante/descendante) les plus proches de valmax/2
    - une fois les deux ordonnées trouvées faire la différence de leurs abscisses respectives

    J'ai néanmoins du mal à traduire sous python le fait de retrouver les 2 valeurs qui se rapprochent le plus de la valeur seuil.
    As-tu une idée ?

    Merci

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Tu cherches i tel que y_i soit le plus proche de y_demi.
    Si je reformule :
    tu cherches i tel que abs(y_i - y_demi) soit le plus petit possible, et tu es donc ramené à un calcul standard de minimum.

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

Discussions similaires

  1. Largeur mi-hauteur FWHM
    Par Ylane42 dans le forum VB.NET
    Réponses: 0
    Dernier message: 21/02/2012, 10h11
  2. Réponses: 1
    Dernier message: 17/03/2008, 13h33
  3. Ajuster des largeurs ou des hauteurs
    Par JeanMarc_T2k dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/03/2008, 11h16
  4. Récupérer la largeur et la hauteur d'une image
    Par loacast dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/08/2007, 02h18

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