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 : 393
Taille : 64,0 Ko

Merci d'avance pour votre aide