我正在努力在 iOS (swift) 上重新实现 python 代码。
我需要对一维数据 block 进行 fft(numpy 样式)。每个大小为 1050(窗口音频数据)。
幸运的是,我找到了有关如何以 numpy 样式执行 iOS fft 的相关解释和代码片段(link)。
但是,我陷入了加速框架仅支持在 power of 2 input data length 上执行 fft 的困境。 (或 more recently 、 f * 2^n,其中 f 为 3、5 或 15,且 n 至少为 3)。
我在窗口大小 1050 上测试了我的 python 代码。非常适合我的用例。但由于上述限制,在 iOS 上实现并不简单。
深入研究 numpy c 代码以了解它们如何处理非二次幂的长度并不是那么容易。这个answer对我来说是一个很好的起点,但仍然没有得到它。
这里的速度也很重要,这就是为什么我不考虑暴力破解。
这里的任何指导将不胜感激。
最佳答案
IIRC,对于 fft,numpy 在底层使用 fftpack,这是旧 NCAR Fortran 数学库的 C 转换。实际的 numpy fft 并未在 Python 代码中实现。您很可能使用 Xcode 编译一些 fftpack C 代码,并使用桥接 header 从 iOS Swift 代码调用它。
关于ios - iOS 上的 fft numpy 风格以非二次方数据长度加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53812730/