2012-01-16 4 views
2

Я начинаю с концепциями FFT, и поэтому я понимаю, что если я поставлю 1024 сигнала, я получу 513 бит в диапазоне от 0 Гц до 22050 Гц (в случае частоты дискретизации 44100 Гц). Используя KISS FFT в Cinder, функция getBinSize возвращает ожидаемые значения 513 для ввода 1024 сигналов. Я не понимаю, почему появляются повторяющиеся пики. Запуск тестового звукового образца, проходящего через частоты (по порядку) от 20 Гц до 22000 Гц, я вижу два пика все время. Это выглядит примерно так:Почему в моей картине KISS FFT отображаются повторяющиеся пики, отраженные по оси Y?

__ _ __ | __ _ __ _ __ | __ _ __

Как аудио пьесах, пики, кажется, движутся навстречу друг другу, так что второй пик действительно, кажется, зеркальная дубликатом первого. Каждый пример, который я прошел, кажется, просто идет вперед и закладывает все 513 значений, и у них, похоже, нет этой проблемы с зеркалированием. Я не уверен, что мне не хватает.

+0

Попробуйте сигнал альтернативных и отрицательных с нулями между ними. (т. е. 1,0, -1,0, 1,0, -1,0, ...) Для реального БПФ длины 1024 это должно дать вам один пик на выходе [255] (256-й ящик частоты) –

+0

Спасибо, Марк. Я сделал это, и это дало мне один пик на 256-м ящике частоты, но я не уверен, что это значит. Не могли бы вы помочь мне понять, почему в звуковой дорожке с входными блоками 1024 сигналов кажется зеркальным, но этот сконфигурированный сигнал не сделал? – geranyl

ответ

4

Ok, после прочтения на это, я нашел решение. Причина зеркалирования заключается в том, что я использую БПФ на реальных числах (реальный БПФ). Нормальный БПФ, как все знают, работает на комплексных числах. Следовательно, мнимая часть «установлена» на 0 в реальном БПФ, что приводит к зеркальному отображению вокруг середины (или технически говоря зеркало вокруг 0 ​​и N/2).

Ниже приведено подробное обсуждение: http://www.edaboard.com/thread144315.html

И прочитал P 238 - 242 об этой книге. Это фантастика, так что купите. Я думаю, что есть бесплатная pdf-версия на сайте автора: http://www.dspguide.com/

1

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

Пики будут перемещаться друг к другу, когда зеркальные изображения друг друга касаются центра.

Другая возможность заключается в том, что ваш FFT как-то только длиной 512.

+0

Я проверил как длину ввода, так и результат. Я ввожу 1024 и получаю 513 назад. Построение значений 513 показывает мне зеркальное изображение, поэтому я не понимаю, что происходит. – geranyl

 Смежные вопросы

  • Нет связанных вопросов^_^