Appliquer la pondération A

11

Je veux calculer le volume d'un signal donné et je suis tombé sur ce fil . Je suis légèrement confus au sujet de l'aspect de pondération A. Je ne peux pas publier d'images, mais je pense que ce site a la formule dont j'ai besoin. (Wa = 10log ...)

Ce que je ne comprends pas, c'est comment l'utiliser réellement dans mon programme. Si le freprésente la fréquence, je suppose que je peux coder en dur les valeurs car elles resteront constantes. Si tel est le cas, comment puis-je appliquer Waà mes exemples de valeurs et quelles valeurs dois-je utiliser? Dois-je calculer le spectre de puissance pour obtenir des WINDOW_SIZE/2valeurs et multiplier chaque valeur dans la bande de fréquences par une Wavaleur précalculée pertinente ou est-ce la mauvaise façon de procéder? Merci d'avance.

TryNCode
la source

Réponses:

8

Oui, vous pouvez coder en dur les valeurs, effectuer une FFT de votre signal et multiplier par les valeurs codées en dur, puis obtenir l'amplitude dans le domaine fréquentiel à partir du théorème de Parseval ( exemple ).

Vous pouvez également implémenter un filtre numérique et le faire dans le domaine temporel. Voici le code Matlab et ma traduction en Python .

Notez que la transformée bilinéaire fait que le filtre numérique se déroule plus rapidement que le filtre analogique, introduisant des erreurs de mesure à des taux d'échantillonnage communs. Une solution simple consiste à suréchantillonner les données en premier, afin que l'écart soit minimisé. Autres approches de conception de filtres ici: http://dsp.stackexchange.com/q/36077/29

endolith
la source
Merci, je le comprends un peu mieux. Dans votre exemple Parseval, rms_flat est-il l'équation RMS (SQRT(x1^2 + x2^2...xn^2/n))et quelle est la différence entre rms_flat du signal et rms_flat de la FFT?
TryNCode
@ExpAns: Oui, rms_flat()c'est juste sqrt(mean(absolute(a)**2)). Le /nest à l'extérieur. La valeur RMS du signal et la FFT sont les mêmes sauf pour un facteur d'échelle.
endolith