Подтвердить что ты не робот

Для чего это окно Хэмминга?

Я работаю с некоторым кодом, который преобразует преобразование Фурье (для вычисления кепстра образца аудио). Прежде чем он вычислит преобразование Фурье, он применит окно Хэмминга к образцу:

for(int i = 0; i < SEGMENTATION_LENGTH;i++){
    timeDomain[i] = (float) (( 0.53836 - ( 0.46164 * Math.cos( TWOPI * (double)i  / (double)( SEGMENTATION_LENGTH - 1 ) ) ) ) * frameBuffer[i]);
}

Почему он это делает? Я не могу найти повод для этого сделать это в коде или в Интернете.

4b9b3361

Ответ 1

Всякий раз, когда вы выполняете конечное преобразование Фурье, вы неявно применяете его к бесконечно повторяющемуся сигналу. Так, например, если начало и конец вашего конечного образца не совпадают, то это будет выглядеть так же, как разрыв в сигнале, и проявить себя как много высокочастотной бессмыслицы в преобразовании Фурье, которое вы не действительно хотите. И если ваш образец окажется красивой синусоидой, но целое число периодов не совпадает точно с конечным образцом, ваша FT будет показывать значительную энергию во всех местах, где-то рядом с реальной частотой. Вы не хотите этого.

Окно данных гарантирует, что концы совпадают, сохраняя все разумно гладким; это значительно уменьшает "спектральную утечку", описанную в предыдущем абзаце.

Ответ 2

Это старый вопрос, но я думал, что ответ может быть улучшен.

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

Sinc function

Почему? Реальные синусоидальные волны простираются до бесконечности в обоих направлениях. Компьютеры не могут выполнять вычисления с бесконечным количеством точек данных, поэтому все сигналы "обрезаются" с обоих концов. Это вызывает пульсацию по обе стороны от пика, который вы видите. Окно хамминга уменьшает эту пульсацию, давая вам более точное представление об исходном частотном спектре сигнала.

Больше теории для заинтересованных: когда вы отключите свой сигнал с обоих концов, вы неявно умножаете свой сигнал на квадратное окно. Преобразование четверки квадратного окна - это изображение выше, известное как функция sinc. Всякий раз, когда вы выполняете преобразование Фурье на компьютере, нравится вам это или нет, вы всегда выбираете какое-то окно. Квадратное окно является неявным дефолтом, но не очень хорошим выбором. Существует множество окон, которые люди придумали, в зависимости от определенных характеристик, которые вы хотите оптимизировать. Окно hamming является одним из стандартных.

Ответ 3

Что я знаю о хороших и быстрых исследованиях, похоже, что окно Хэмминга здесь, чтобы минимизировать долю стороны сигнала (нежелательное излучение). Таким образом, улучшается качество или гармоники звука. Я также понимаю, что этот вид функции окна подходит для DTFT.

Вы найдете хорошее техническое объяснение на странице stanford research или wikipedia, а также в документ Harris, если вы готовы к математике: D.

Ответ 4

FT сегмента конечной длины синусоиды свертывает преобразование Фурье окна против пика частоты синусоиды, поскольку свойство БПФ состоит в том, что векторное умножение в одной области является сверткой в ​​другой. FT прямоугольного окна (что и подразумевает любая немодифицированная конечная длина выборок в FFT) - это беспорядочно выглядящая функция Sinc, которая разбрызгивает любой сигнал, который не является точно периодическим в окне по всему частотному спектру.

FT окна в форме Хэмминга концентрирует этот "брызги" намного ближе к пику частоты после свертки (чем функция Sinc), что приводит к более резкому, но более плавному пику частоты, но намного меньше брызгает между частотами, далекими от частотный пик. Это приводит не только к более чистому спектру, но и к меньшему вмешательству с далеких частот по любому интересующему сигналу.

Эта интерпретация (в отличие от "бесконечно повторяющейся" интерпретации) делает более понятным, почему окна с различной формой, чем Хэмминг, могут дать вам лучшие результаты с еще меньшей "утечкой". В частности, окно Хэмминга уменьшит размер первой боковой доли Sinc "утечки" рядом с пиком частоты в обмен на фактически более "утечку" (или разбрызгивание свертки) вдали от частоты, представляющей интерес. Другие окна могут быть более уместными, если вы хотите другой компромисс. Документ Харриса (pdf здесь), связанный в другом ответе выше, дает несколько примеров этих разных окон.