ios - iOS 上的 fft numpy 风格以非二次方数据长度加速

标签 ios swift numpy fft accelerate-framework

我正在努力在 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/

相关文章:

objective-c - 保存包含 'Calculation' 字段的 PKTItem 时是否有避免错误的解决方法?

python - 将多个 pandas 数据帧中的所有列连接到一个包含数据和列名称的数据帧中

python - Numpy 比较 2 个数组形状,如果不同,追加 0 以匹配形状

ios - 在 CGContext 中绘制透明 PNG 显示为黑色

ios - 可选的 Int 属性在迁移期间包含 nil 而不是零

ios - AVPlayer 视频 currentTime 总是返回 0

python - Python 单元测试自动生成数据

ios - 为什么图像用CGImage :scale:orientation: doesn't work?

ios - 从不兼容类型 'NSBlockOperation *__strong' 分配给 'void (^)(void)' getNewMessages = ^{ ^ ~~

ios - 捕获 iOS 应用程序中的调试信息