Applicazione della ponderazione A.


11

Voglio calcolare il volume di un determinato segnale e mi sono imbattuto in questo thread . Sono un po 'confuso per quanto riguarda l'aspetto A-Weighting. Non riesco a pubblicare immagini, ma penso che questo sito abbia la formula di cui ho bisogno. (Wa = 10log ...)

Quello che non capisco è come usarlo nel mio programma. Se fsta per frequenza, presumibilmente posso codificare i valori poiché rimarranno costanti. In tal caso, come posso applicare Waai miei valori di esempio e quali valori utilizzo? Calcolo lo spettro di potenza per ottenere WINDOW_SIZE/2valori e moltiplicare ciascun valore nella banda di frequenza con il Wavalore precalcolato pertinente o è il modo sbagliato di farlo? Grazie in anticipo.

Risposte:


8

Sì, è possibile codificare i valori, eseguire una FFT del segnale e moltiplicarli per i valori codificati, quindi ottenere l'ampiezza nel dominio della frequenza dal teorema di Parseval ( esempio ).

Potresti anche implementare un filtro digitale e farlo nel dominio del tempo. Ecco il codice Matlab e la mia traduzione in Python .

Si noti che la trasformazione bilineare provoca il roll-off del filtro digitale più rapidamente del filtro analogico, introducendo errori di misurazione a frequenze di campionamento comuni. Una semplice soluzione è prima di sottocampionare i dati, quindi la discrepanza è ridotta al minimo. Altri approcci di progettazione del filtro qui: http://dsp.stackexchange.com/q/36077/29


Grazie, lo capisco un po 'meglio. Nel tuo esempio Parseval, rms_flat è l'equazione RMS (SQRT(x1^2 + x2^2...xn^2/n))e qual è la differenza tra rms_flat del segnale e rms_flat dell'FFT?
Prova il codice NC

@ExpAns: Sì, rms_flat()è giusto sqrt(mean(absolute(a)**2)). L' /nesterno. Il valore RMS del segnale e FFT sono gli stessi tranne per un fattore di ridimensionamento.
endolith
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.