Требуется БПФ для почти бесконечного набора точек данных - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно выполнить преобразование Фурье для длинного потока данных. Я сделал DFT-файл .c, который работает нормально, недостатком, конечно, является скорость. Это медленный AF.

Я ищу способ выполнить БПФ для длинного потока данных. Для всех библиотек FFT требуется максимум 1024, 2048 или даже 4096 точек данных.

Я получаю данные от АЦП, который работает на частоте около 128000 Гц, и мне нужно измерять данные в диапазоне от 1 до 10 секунд. Это означает массив от 128 000 до 1 280 000 выборок. В моем коде я проверяю частоты от 0 до 2000. Для расчета sin + cos потребовалось около 400 тиков ядра. Ядро работает на частоте 480 МГц, поэтому стоит около 1 доллара США.

Это означает 2000 частот * 128 000 выборок * 1 us = +/- 256 секунд (4 минуты) анализа на 1 секунду данных.

А если использовать 10 секунд, это будет стоить 40 минут.

Кто-нибудь знает более быстрый способ или решение FFT, которое поддерживает почти "бесконечный" массив данных?

1 Ответ

0 голосов
/ 12 июня 2019

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

Если разрешение АЦП не такое высокое (например, менее 16 бит), вы можете использовать арифметику с фиксированной запятой. Это может помочь сократить время вычислений, особенно если ваша машина не поддерживает аппаратное вычисление с плавающей запятой. пожалуйста, обратитесь: Q числовой формат

Если вы используете базовый контроллер ARM, вы можете проверить это: http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html

...