Для чего предназначено окно Хэмминга? - PullRequest
32 голосов
/ 24 марта 2011

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

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]);
}

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

Ответы [ 4 ]

40 голосов
/ 24 марта 2011

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

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

38 голосов
/ 08 февраля 2014

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

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

Sinc function

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

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

11 голосов
/ 24 марта 2011

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

Хорошее техническое объяснение вы найдете на странице исследователя Стэнфорда или википедии , а также в статье Харриса , если вы готовыматематика: D.

9 голосов
/ 24 марта 2011

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

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

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

...