2014-02-21 7 views
0

Я пытаюсь сделать FFT и извлекать высокочастотные функции на смартфонах. Оказывается, слишком медленно делать полный БПФ на 44100HZ дискретизированных данных на смартфонах, но понижающая дискретизация будет убивать высокочастотную информацию из-за теоремы Найквиста. Есть ли способ ускорить БПФ при сохранении более высоких частот?Извлечь только высокую частоту от FFT

+1

FFT в родном коде ARM (с использованием NDK на Android) должен быть в состоянии не отставать от частоты дискретизации 44,1 кГц на большинстве современных смартфонов, используя лишь небольшую часть процессора. – hotpaw2

+1

Какой размер сегмента вы используете? Используете ли вы перекрытие-дополнение для реализации фильтра? Для более коротких фильтров высоких частот вы также можете реализовать свертку напрямую. – LutzL

+0

Даже в чистой Java вы должны быть в состоянии идти в ногу, если ваши окна не ОГРОМНЫ. –

ответ

0

Неясно, хотите ли вы использовать информацию БПФ или если это всего лишь способ реализовать некоторый фильтр.

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

Если фильтр является фильтром, фильтр должен быть разумным задолго до того, как вы получите какую-либо выгоду от применения фильтрации на основе преобразования. Кроме того, если вы это сделаете, убедитесь, что вы читаете о перекрытии-добавлении и фильтрации перекрытия-сохранения и не переходите со всеми к общему «давайте возьмем БПФ, умножим на« идеальный »ответ, а затем на IFFT». Это, в общем, не даст ожидаемого результата (если вы не ожидаете передачи функции, которая меняется во времени и отличается от «идеала»).

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