FFT NumPy Style на iOS ускоряется с не мощностью две длины данных - PullRequest
0 голосов
/ 17 декабря 2018

Я работаю над повторной реализацией кода Python на iOS (swift).

Мне нужно выполнить fft (стиль numpy) для кусков одномерных данных.каждый размером 1050 (оконные аудиоданные).

К счастью, я нашел соответствующее объяснение и фрагмент кода о том, как сделать iOS FFT в стиле NumPy ( ссылка ).

Тем не менее, я застрял там, где ускорение фреймворка поддерживает выполнение fft только на степени 2 с длиной входных данных (или совсем недавно , f * 2 ^ n, где f равно 3, 5., или 15 и n по крайней мере 3).

Я проверил мой код Python на размере окна 1050. Работает отлично для моего варианта использования.Но это нелегко реализовать на iOS из-за вышеуказанного ограничения.

Не так просто покопаться в клочковатом c-коде, чтобы узнать, как они это делают, не используя две длины.Этот ответ был хорошей отправной точкой для меня, но все еще не получил его.

Скорость здесь также важна, поэтому я не рассматриваю грубую силу дфт.

Буду очень признателен за любые указания.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Ваши ответы / комментарии помогли мне использовать код на c / c ++ для получения желаемого результата.(Я не думал об этом как вариант изначально).

В итоге я использовал opencv функцию dft (которая внутренне реализует fft), которая дает результаты, аналогичные fft numpy (+, согласно их документам, он быстрее, чем numpy).

0 голосов
/ 18 декабря 2018

IIRC, для fft, под капотом, numpy использует fftpack, преобразование C в старую математическую библиотеку NCAR Fortran.Фактический numpy fft не реализован в коде Python.Скорее всего, вы могли бы скомпилировать некоторый код C fftpack, используя Xcode, и использовать заголовочный мост для вызова его из кода iOS Swift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...