Как увеличить количество точек в узкой полосе БПФ для 1/3 октавного анализа

Я рассчитываю уровень звукового давления сигнала давления-времени. Количество выборок в секунду составляет 9831. (dt = 0,0001017 с) Всего для простого примера собирается 749 выборок.

В этом примере я использую 512 точек БПФ, поэтому частота начинается с 19,2 Гц до 4877 Гц, а dF = 19,2 Гц.

Я хочу рассчитать SPL (уровень звукового давления) для частот 1/3 октавы.

Итак, я беру 10-полосный октавный частотный диапазон 1 Гц, 1,25 Гц, 1,6 Гц, 2 Гц, 2,5 Гц, 3,15 Гц, 4 Гц, 5 Гц, 6,3 Гц, 8 Гц, который кратен 10 (т. Е. Далее идет как 10 Гц, 12,5 Гц, 16 Гц ..... до 5000 Гц)

Обратите внимание, что это центральная частота 1/3 октавной полосы.

И каждая полоса имеет нижнюю и верхнюю частоты («fl» и «fu»), как показано ниже. "freq" рассчитывается на основе частоты дискретизации, поэтому она увеличивается на 19,2. «i» представляет номер точки fft, примечание точка 1 - 0 Гц. «j» представляет номер полосы fft, поскольку частота увеличивается, количество точек внутри полосы увеличивается.

 i=2 j=13 fl=   17.82  freq=    19.2  fu=   22.27  
 i=3 j=16 fl=   35.64  freq=    38.4  fu=   44.54  
 i=4 j=18 fl=   56.13  freq=   57.61  fu=   71.27  
 i=5 j=19 fl=   71.27  freq=   76.81  fu=   89.09  
 i=6 j=20 fl=   89.09  freq=   96.01  fu=   111.4  
 i=7 j=21 fl=   111.4  freq=   115.2  fu=   142.5  
 i=8 j=21 fl=   111.4  freq=   134.4  fu=   142.5  
 i=9 j=22 fl=   142.5  freq=   153.6  fu=   178.2  
 i=10 j=22 fl=   142.5  freq=   172.8  fu=   178.2  
 i=11 j=23 fl=   178.2  freq=     192  fu=   222.7  
 i=12 j=23 fl=   178.2  freq=   211.2  fu=   222.7  
 i=13 j=24 fl=   222.7  freq=   230.4  fu=   280.6  
 i=14 j=24 fl=   222.7  freq=   249.6  fu=   280.6  
 i=15 j=24 fl=   222.7  freq=   268.8  fu=   280.6  
 i=16 j=25 fl=   280.6  freq=     288  fu=   356.4  
 i=17 j=25 fl=   280.6  freq=   307.2  fu=   356.4  
 i=18 j=25 fl=   280.6  freq=   326.4  fu=   356.4  
 i=19 j=25 fl=   280.6  freq=   345.6  fu=   356.4  
 i=20 j=26 fl=   356.4  freq=   364.8  fu=   445.4 

Это приводит к тому, что мой расчет среднеквадратичных значений внутри нижних октавных полос дает плохие результаты, так как в нем недостаточно точек внутри полос (обычно 1 или 2), поскольку по мере увеличения частоты усреднение лучше (например, в полосе "j" = 25 используются четыре точки для расчета среднеквадратичного значения).

Есть ли способ улучшить расчет среднеквадратичного значения, разделив частотный диапазон на два (нижний и верхний диапазоны) и применив другой размер дискретизации fft, чтобы включить столько точек внутри частот нижнего диапазона (обычно от 100 Гц до 600 Гц).

Я также планирую использовать оконную функцию Ханна, чтобы уменьшить утечку, следует ли применять до FFT или после FFT.

Ваши предложения приветствуются.


person Balaji Spades    schedule 14.08.2015    source источник


Ответы (2)


Окно Ханна применяется во временной области до БПФ.

Что касается разрешения по частоте - серебряной пули нет - если у вас есть только 749 сэмплов с частотой дискретизации 9,8 кГц, то это ограничит доступное разрешение. Вы можете получить немного большее разрешение, если используете более длинное смешанное основание БПФ, например N = 735 хорошо разлагается на множители и будет работать с FFTW. Вы также можете использовать заполнение нулями для эффективной интерполяции выходного спектра, например дополните свои 749 отсчетов, скажем, 4096 нулевыми отсчетами, чем выполните БПФ с 4096 точками. На самом деле это не дает дополнительной информации, но интерполяция может быть полезной.

person Paul R    schedule 14.08.2015

Вы можете заполнить нулями перед БПФ, чтобы интерполировать больше интервалов частотных результатов. Затем эти интерполированные элементы разрешения по частоте можно использовать для более точного разделения спектра на полосы с более равномерным размером.

person hotpaw2    schedule 18.08.2015