Нормализация данных FFT (FFTW) - PullRequest
5 голосов
/ 31 января 2011

Используя FFTW, я вычислял FFT нормализованных данных WAV-файла.Однако я немного запутался в том, как мне следует нормализовать вывод FFT.Я использовал метод, который казался мне очевидным, который просто делится на наибольшую величину БПФ.Однако я видел деление на 1 / N и N / 2, рекомендуемое (где я предполагаю, что N = размер FFT).Как они работают как факторы нормализации?Мне кажется, что между этими факторами и фактическими данными нет интуитивно понятной связи - так что же мне не хватает?

Огромное спасибо заранее за любую помощь по этому вопросу.

Ответы [ 2 ]

5 голосов
/ 01 февраля 2011

Удивительно, но не существует единого согласованного определения для FFT и IFFT, по крайней мере, в том, что касается масштабирования, но для большинства реализаций (включая FFTW) вам нужно масштабировать на 1 / N в прямом направлении, и естьмасштабирование не выполняется в обратном направлении.

Обычно (по соображениям производительности) вы захотите объединить этот коэффициент масштабирования с любыми другими поправками, такими как усиление АЦП, поправочный коэффициент усиления окна и т. д., чтобыу вас есть только один комбинированный масштабный коэффициент для применения к выходным лоткам FFT.В качестве альтернативы, если вы просто генерируете, скажем, спектр мощности в дБ, то вы можете сделать коррекцию одним значением дБ, которое вычтете из своих бинов спектра мощности.

4 голосов
/ 01 февраля 2011

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

...