我想将算法从Android移植到用C编写的iOS。对于Android,我使用fftw3库。而且它能够对任意大小的输入数据运行该算法。例如,我在调试中看到的大小为14996。这非常有效。当我从这里阅读文档:https://developer.apple.com/documentation/accelerate/1449739-vdsp_dft_zrop_createsetup?language=objc时,我发现输入长度有一些特殊要求。有什么方法可以避免这种情况或修改输入数据以满足要求?

最佳答案

抱歉,不,Accelerate DFT例程仅支持记录的大小。仅支持2乘以1、3、5或15的幂。

(其中包括以前有用的尺寸。如果我们收到足够的其他尺寸要求,将来有可能支持其他尺寸,但14996似乎不寻常。通常首选素数较小的数字,但14996的尺寸为151 。是什么使它成为进行DFT有趣的尺寸?)

至于修改输入数据,某些应用程序会将其数据填充为零以使其成为受支持的长度。但是,然后可能需要根据应用程序进行调整。

当然,您也可以在iOS上使用FFTW。

关于ios - 如何使用数据长度(不是2的幂)运行Apple Accelerate fft算法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47724920/

10-12 16:41
查看更多