需要FFT才能获得几乎无限的数据点集

时间:2019-06-11 13:17:22

标签: c transform fft

我需要对长数据流执行傅立叶变换。我制作了一个DFT .c文件,可以正常工作,缺点当然是速度。自动对焦速度慢。

我正在寻找对长数据流执行FFT的方法。 所有的FFT库都需要一个最大为1024、2048或什至4096个数据点的数组。

我从运行在128000 Hz附近的ADC获得数据,我需要测量1到10秒之间的数据。这意味着从128 000到128万样本的阵列。在我的代码中,我检查了0到2000年的频率。一次sin + cos计算花费了大约400个核心滴答。核心的运行频率为480 Mhz,因此成本约为1 us。

这意味着每1秒钟数据分析2000个频率* 128 000个样本* 1 us = +/- 256秒(4分钟)。

使用10秒时,将花费40分钟。

有人知道更快的方法或支持接近“无限”数据数组的FFT解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您的计算涉及浮点数,则在不需要那种保证的浮点数精度的情况下,请避免使用双精度。

如果您的ADC分辨率不是那么高(例如小于16位),则可以考虑使用定点算法。这可以帮助减少计算时间,尤其是在您的计算机不支持硬件浮点计算的情况下。请参阅:Q number format

如果使用的是ARM基本控制器,则可能需要检查以下内容: http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html