【问题标题】:Fourier Transform on AndroidAndroid 上的傅里叶变换
【发布时间】:2011-09-01 10:29:07
【问题描述】:

是否有任何 Android 的 API 使用 设备的DSP?或者是否有任何 API 允许使用设备的 DSP?

谢谢。

【问题讨论】:

  • 查看这个帖子:stackoverflow.com/questions/4885578/…希望它可以帮助你!
  • 您好 Dimitris 感谢您的回复,但问题不是 FFT 实现,问题是这种实现的方式。我不能通过 FFT 计算消耗 CPU 时间。我不知道 JTransform 的消耗如何,但也许我可以使用它。谢谢

标签: android api fft


【解决方案1】:

不,没有用于执行硬件加速 FFT 的公共 API。

您可以通过定位armeabi-v7a ABI 来优化本机代码,以便使用 FPU。这对于浮点 FFT 非常有用。

请参阅Android NDK 的 docs/ 目录中的 CPU-ARCH-ABIS

【讨论】:

    【解决方案2】:

    抱歉,这有点晚了,但如果您想在 Android 中计算实数或复数的傅立叶变换,最好使用 jTransfrom 或 libgdx.FFT。 libgdx 使用 KissFFT 后端,不太确定 jTransform 使用什么。

    查看这个关于如何实现 libgdx 的示例:

    http://www.digiphd.com/android-java-simple-fft-libgdx/

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      首先,并非所有设备都有 DSP。大多数实际上只有一个 CPU 和 GPU。

      到今天为止,如果没有自定义 ROM/固件,您可能无法真正做您想做的事。好消息是他们正在努力。查看Renderscript,它从 Honeycomb 开始可用。它目前仅在 CPU 上运行(尽管它可以使用多个内核),但计划是在未来的版本中允许在 GPU(也可能是 DSP)上执行,而您几乎不需要更改代码。请参阅this post 了解更多信息。

      【讨论】:

        【解决方案4】:

        据说Visualiyer能够从音频播放中导出FFT:

        http://developer.android.com/reference/android/media/audiofx/Visualizer.html

        但这肯定不是你喜欢的。

        【讨论】:

        • 您好康斯坦丁,感谢您的快速响应,但我需要傅里叶变换的数据,所以我需要计算它。我可以在本机代码上实现 FFT,但是会消耗大量 CPU。如果我可以访问设备的 DSP,我将释放 CPU 进行 FFT 计算。
        • 我怀疑是否有公开的 API 可以做到这一点。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 2021-07-12
        • 2011-07-12
        • 1970-01-01
        相关资源
        最近更新 更多