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 БПФ, издержки на вызов функции логарифма относительно невелики.