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 :

Echelle décibel graphique


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Par défaut Echelle décibel graphique
    Bonjour,

    Alors voila afin d'exploiter les résultats de mesures micros d'haut-parleurs j'utilise donc Python afin de tracer des graphiques. Les résultats sont stockées en colonnes dans un fichier text, avec une colonne pour le temps et une pour la pression au carré. Je tente de passer l'échelle des ordonnées de mes graphiques en échelle décibel ( qui correspond donc à dB(SPL)=20log(Pression/Pression de ref) ). N'était encore que débutant dans Python, j'ai tenté de passé par des procédés mathématiques pour réaliser ce que je souhaite. J'ai donc fais ^10 sur les données de la colonne des pressions acoustiques au carré, afin d'avoir P^20, et j'ai également fait Po^20 afin d'avoir:

    x=((P^2)^10)/Po^20

    =P^20/Po^20

    =(P/Po)^20.

    Ensuite à l'aide de plt.loglog (t, x ), j'applique le logarithme sur le tout pour avoir une échelle en décibel ( puisque log((P/Po)^20) = 20log(P/Po) ).

    Ma méthode n'a pas l'air de très bien fonctionner, ou alors je l'ai mal réaliser. Quelqu'un peut me dire ou je me suis tromper, ou alors quelle serait la meilleur technique pour avoir une échelle décibel ?

    Voici mon programme :

    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
    file_temp = "Spectre253Hz.txt"
     
    data_temp = np.loadtxt(file_temp)
     
    t = data_temp[: , 0]              # t est la première colonne, toutes les lignes ( ici le temps)
    o = data_temp[: , 1]              # x(t) est la seconde colonne, toutes les lignes ( ici (Pacoustique)^2)
    y = data_temp[: , 2]              # y(t) est la troisième colonne, toutes les lignes
     
    Po = 2.0e-5                         #Pression de ref en Pa, correspondant au seuil audible
    ref = Po**20                        #Pression de ref montée à la puissance 20
    n = o**10                           #(Pac)^2 montée à la puissance 20 
     
    x = n/ref                           # x = P^20/Pref^20 = (P/Pref)^20
     
    plt.figure(figsize=(10,6))
     
     
    plt.subplot(2,2,1)
    plt.loglog(t,x, color = 'b', label = 'GBF') #Application de l'échelle log
     
    plt.title("Signal sinusoidale de 253Hz mesuré par le micro")
    plt.ylabel('pression acoustique en dB SPL')
    plt.xlabel('Temps (s)')
    plt.grid(True, 'both',color='grey', ls='--')
    et voici le résultat obtenu:
    Nom : Capture2.PNG
Affichages : 399
Taille : 64,0 Ko

    Merci d'avance pour votre aide

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Par défaut
    Rebonjour,

    Je pense avoir trouvé un moyen de faire qui correspond pas trop mal à ce que je recherche, dites moi ce que vous en pensez:
    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
    file_temp = "Spectre253Hz.txt"
     
    data_temp = np.loadtxt(file_temp)
     
    t = data_temp[: , 0]              # t est la première colonne, toutes les lignes ( ici le temps)
    o = data_temp[: , 1]              # x(t) est la seconde colonne, toutes les lignes ( ici (Pacoustique)^2)
    y = data_temp[: , 2]              # y(t) est la troisième colonne, toutes les lignes
     
    Po = 2.0e-5                                              
    x = np.sqrt(o)                          
     
    plt.figure(figsize=(10,6))
     
    sp_db = 20 * np.log10( x/Po )
     
    plt.subplot(2,2,1)
    plt.loglog(t,sp_db, color = 'b', label = 'GBF') #Application de l'échelle log
     
    plt.title("Signal sinusoidale de 253Hz mesuré par le micro")
    plt.ylabel('pression acoustique en dB SPL')
    plt.xlabel('Temps (s)')
    plt.grid(True, 'both',color='grey', ls='--')
    #plt.xlim((0, ))
    #plt.legend()

Discussions similaires

  1. Rendre une echelle de graphique dynamique
    Par Invité dans le forum Excel
    Réponses: 2
    Dernier message: 11/12/2018, 08h44
  2. BO6 - Echelle de graphique sur même section
    Par Thomas.lp dans le forum Débuter
    Réponses: 1
    Dernier message: 27/05/2013, 10h14
  3. [XL-2003] Echelle logarithmique graphique
    Par pastis.vi dans le forum Excel
    Réponses: 5
    Dernier message: 16/04/2011, 16h13
  4. [XL-2003] Echelles de graphiques dépendantes les unes des autres
    Par blabla31 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/02/2010, 11h32
  5. Echelle Automatique graphique / val mini 0 ou pas
    Par lbar012001 dans le forum Contribuez
    Réponses: 1
    Dernier message: 04/02/2008, 09h45

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