Применение A-взвешивания

11

Я хочу рассчитать громкость данного сигнала, и я наткнулся на эту тему . Я немного озадачен аспектом взвешивания. Я не могу публиковать изображения, но я думаю, что у этого сайта есть формула, которая мне нужна. (Wa = 10log ...)

Чего я не понимаю, так это как использовать его в моей программе. Если fозначает частоту, то, вероятно, я могу жестко закодировать значения, поскольку они останутся постоянными. Если это так, как мне применить Waмои значения выборки и какие значения я использую? Я рассчитываю спектр мощности, чтобы получить WINDOW_SIZE/2значения и умножить каждое значение в полосе частот на соответствующее предварительно вычисленное Waзначение, или это неправильный способ сделать это? Заранее спасибо.

TryNCode
источник

Ответы:

8

Да, вы можете жестко закодировать значения, выполнить БПФ вашего сигнала и умножить на жестко закодированные значения, а затем получить амплитуду в частотной области из теоремы Парсеваля ( пример ).

Вы также можете реализовать цифровой фильтр и сделать это во временной области. Вот код Matlab и мой перевод на Python .

Обратите внимание, что билинейное преобразование заставляет цифровой фильтр спадать быстрее, чем аналоговый фильтр, что приводит к ошибкам измерения при обычных частотах дискретизации. Простое исправление состоит в том, чтобы сначала выполнить выборку данных, поэтому расхождение сводится к минимуму. Другие подходы к дизайну фильтров здесь: http://dsp.stackexchange.com/q/36077/29

эндолиты
источник
Спасибо, я понимаю это немного лучше. В вашем примере Parseval, является ли rms_flat уравнением RMS (SQRT(x1^2 + x2^2...xn^2/n))и в чем разница между rms_flat сигнала и rms_flat БПФ?
TryNCode 13.10.11
@ExpAns: Да, rms_flat()это просто sqrt(mean(absolute(a)**2)). /nНаходится на внешней стороне. Среднеквадратичное значение сигнала и БПФ одинаковы, за исключением коэффициента масштабирования.
эндолит