vDSP: функции FFT включают управление окнами?

Я работаю над реализацией алгоритма с использованием vDSP.

1) взять БПФ 2) взять журнал квадрата абсолютного значения (можно сделать с помощью таблицы поиска) 3) взять другой БПФ 4) принять абсолютное значение

Я не уверен, что мне нужно бросить входящие данные через оконную функцию, прежде чем я запусту FFT на нем.

vDSP_fft_zrip(setupReal, &A, stride, log2n, direction);

это моя функция БПФ

Нужно ли сначала перебрасывать данные через vDSP_hamm_window(...)?

3 ответа

Решение

Функция библиотеки iOS Accelerate vDSP_fft_zrip() не включает в себя применение оконной функции (если вы не учитываете подразумеваемое прямоугольное окно из-за параметра конечной длины).

Поэтому вам нужно сначала применить выбранную вами оконную функцию (есть много разных).

Похоже, вы делаете кепстральный анализ, и да, вам нужна оконная функция до первого БПФ. Я бы предложил простое окно Ханна или Хэмминга.

У меня нет никакого опыта работы с вашей конкретной библиотекой, но в любой другой библиотеке FFT я знаю, что вы должны сначала оклеить данные. Если ничего другого, библиотека не может знать, какое окно вы хотите использовать, и иногда вы не хотите использовать окно (если вы используете FFT для фильтрации с перекрытием-добавлением или если вы точно знаете, что сигнал является точным). периодический в блоке преобразования).

Кроме того, просто случайно, если вы делаете 2 БПФ, издержки на вызов функции логарифма относительно невелики.

Другие вопросы по тегам