Почему мой график KISS FFT показывает повторяющиеся пики, отраженные на оси Y?

StackOverflow https://stackoverflow.com/questions/8887896

  •  29-10-2019
  •  | 
  •  

Вопрос

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

__ _ __ _ __ | __ _ __

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Пики будут двигаться навстречу друг другу при зеркальном отображении друг друга относительно центра.

Другая возможность состоит в том, что ваше БПФ каким-то образом имело длину 512.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top