【问题标题】:On the fly calculation of Fourier transformation in JavaJava中傅里叶变换的动态计算
【发布时间】:2010-08-14 16:15:37
【问题描述】:

我想用 Java 编写一个使用快速傅立叶变换的程序。 该程序每 5 毫秒从传感器读取一次数据,并且应该根据最后 5 秒的数据每 200 毫秒对数据进行一次处理。

在 Java 中是否有一个很好的库,它提供了一种无需每次重新计算所有 5 秒即可进行傅里叶变换的方法?

【问题讨论】:

  • 如果数据是动态的,您可能希望重新计算傅里叶变换。您可以让程序等待 195 毫秒,然后开始为傅里叶变换收集数据,这样就可以在 200 毫秒后的最后 5 毫秒内完成。
  • 我不是该领域的专家,但根据我对 FFT 的理解,我认为增量方法是不可能的。 FFT 相对较快 - 您知道在滑动窗口上重新计算 FFT 不够快吗?
  • 他们不是说过早优化是万恶之源吗?)也许我应该先用标准的 FFT 来实现它。

标签: java android fft


【解决方案1】:

硬实时问题不是 Java 的正确应用。有太多变量,例如垃圾收集和线程,不能保证在给定的时间间隔内发生,以使这成为可能。如果足够接近是可以接受的,它将起作用。就时间而言,您的软件性能还取决于您使用的操作系统和硬件以及该机器上还运行的其他程序。

有一个Real Time Java,它确实有一个针对我上面提到的问题的特殊 API。您没有表明您正在使用它。它在很多方面也与普通 Java 不同。

【讨论】:

  • 我需要 Java,因为它必须在 Android 上运行,而且程序需要大量的 API 调用。
  • @Christian - 你的时间有多快?如果您放置一个 Android 标签来帮助指导答案,也会有所帮助。
  • +1 @Romain Hippeau:很好的回答,感谢 RTJS 的提醒
  • 有多快?正如我在问题中所写,每 5 毫秒读取一次,频率等于 200hz。
  • @Christian 除了从某些波计算变换之外,您没有说应用程序应该做什么,或者它将如何处理这些输入。我的回答只是想说,你可能无法保证你能跟上你的时间表,那会有多糟糕?
猜你喜欢
  • 1970-01-01
  • 2010-12-13
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2021-05-18
相关资源
最近更新 更多