Неправильный результат в децибелах для данных FFT - PullRequest
2 голосов
/ 02 октября 2011

Если я помню, диапазон децибел - это битовая глубина * 6.

Я играю wav-файл с его битовой глубиной = 16 (используя NAudio lib) и получаю результат fft, затем вычисляю децибелы для каждого результата fft. 20 * Math.log10 (fftData [i]) и у меня странные результаты (-109 ...) как это может быть больше -96 (для 16 бит)?

(я работаю с .net 4)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 октября 2011

Предел динамического диапазона амплитуды во временной области не распространяется на величину компонентов в частотной области.Прямоугольная волна может быть представлена ​​звуковым сигналом с разрешением всего 1 бит, без какого-либо динамического диапазона.Но в частотной области это определяется как sin (x) + 1/3 sin (3x) + 1/5 sin (5x) ... Дробные коэффициенты иллюстрируют эту точку.Верхние гармоники представляют собой бесконечный ряд с все меньшими коэффициентами, без ограничения их динамического диапазона.

Кроме того, чтобы ответить на ваши последующие действия: да, для целей отображения и визуализации вы должны выбрать некоторый предел, например120 дБ и игнорируйте содержание ниже.Я думаю, что причина игнорирования контента ниже -120 дБ заключается в том, что динамический диапазон человеческого слуха составляет около 120 дБ.Вы также можете рассмотреть шум при квантовании ниже -96 дБ, но я не уверен в этом.

2 голосов
/ 02 октября 2011

дБ является мерой отношения , а не абсолютной амплитуды.Ваша цифра -109 дБ - это отношение относительно некоторой произвольной контрольной точки 0 дБ, которая может соответствовать или не соответствовать полной шкале в вашем случае.

Также важно отметить, что энергия только в одном частотном интервалеможет быть намного меньше, чем энергия, соответствующая 1-битному сигналу, как уже упоминалось Мэттом М, поскольку она представляет энергию в относительно небольшой полосе пропускания (единицы измерения V / sqrt(Hz)).

...