Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

moyenne sur des décibels

cabrette13

XLDnaute Nouveau
bonjour,

je voudrais écrire dans Excel une formule me permettant de calculer la moyenne de plusieurs valeurs en dB
je pense qu'il s'agit de la formule de moyenne énergétique mais je ne sais comment l'écrire dans une cellule Excel
la formule serait du type : M = 10 log 1/3 (10 exp. a/10 + 10 exp.b/10 + 10 exp. c/10 )

merci de vos conseils
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : moyenne sur des décibels

Bonsoir cabrette et bienvenu

Pour ce que j'en ai compris: si vos données sont par exemple en A1:A3 alors essayez cette formule matricielle:
Code:
=10*LOG10(SOMME((PUISSANCE(10;A1:A3/10)))/NBVAL(A1:A3))


NB: la formule ci-dessus n'est correcte que si aucune cellule vide n'est présente dans la plage A1:A3

Edit: pour ne pas tenir compte des cellules vides ou non numériques de la plage, essayez cette formule matricielle:
Code:
=10*LOG10(SOMME(SI(ESTNUM(A1:A3);PUISSANCE(10;A1:A3/10);0))/SOMME(--ESTNUM(A1:A3)))
 

Pièces jointes

  • moyenne sur des décibels v1.xls
    27 KB · Affichages: 199
Dernière édition:

magicfab38

XLDnaute Nouveau
Re : moyenne sur des décibels

Non, malheureusement votre formule ne convient pas... ce serait trop simple !
Pour n échantillons, il faudrait écrire : = 10 log (1 / n) + 10 log ( 10 ^ (L1 / 10) + 10 ^ (L2 / 10) + .... + 10 ^ (Ln / 10))
Mais comme ça n'est pas utilisable dans Excel, le plus simple est de repasser des valeurs en dB vers les pressions en Pascal, d'en faire la moyenne arithmétique, puis de revenir à un affichage en dB.

Au final nous avons écrit une fonction Excel, qui vous pouvez ajouter dans votre classeur Excel.

- Afficher la barre d'outils "Développeur"
- Visualiser le code
- Insérer un nouveau module au classeur
- Coller le code ci-dessous
- Enregistrer

Alors, si dans une cellule vous utiliser la formule =calcul_log(A1:A3) vous obtiendrez la moyenne énergétique sur la plage sélectionnée
Code :

Function calcul_log(rng As Range)
Dim cell As Range
Dim a As Variant
Dim b As Variant
Dim c As Variant

For Each cell In rng
a = a + ((10) ^ (cell / 10))
b = b + 1
Next cell

c = 10 * Application.WorksheetFunction.Log10(a / b)
calcul_log = c

End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…