Java中Fourier变换的动态计算

Java中Fourier变换的动态计算,java,android,fft,Java,Android,Fft,我想用Java编写一个使用快速傅立叶变换的程序。 该程序每5毫秒从传感器读取一次数据,并根据最后5秒的数据每隔200毫秒对数据进行处理 Java中是否有一个好的库,它提供了一种进行傅里叶变换的方法,而不必每次都重新计算所有的五秒钟?硬实时问题不是Java的正确应用。有太多的变量,如垃圾收集和线程,不能保证在给定的时间间隔内发生,从而使这成为可能。如果足够接近是可以接受的,它将工作。就计时而言,软件的性能还取决于您使用的操作系统和硬件,以及该设备上运行的其他程序 对于我上面提到的问题,有一个专门的

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


Java中是否有一个好的库,它提供了一种进行傅里叶变换的方法,而不必每次都重新计算所有的五秒钟?

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


对于我上面提到的问题,有一个专门的API。您没有表示您正在使用它。它在很多方面都与普通Java不同。

如果数据是动态的,您可能希望重新计算傅里叶变换。你可以让程序等待195毫秒,然后开始收集傅里叶变换的数据,这样就可以在200毫秒后的最后5毫秒内完成。我不是该领域的专家,但根据我对FFT的理解,我认为增量方法是不可能的。FFT相对较快-你知道在滑动窗口上重新计算FFT不够快吗?他们不是说过早优化是万恶之源吗;)也许我应该先用标准的FFT实现它。我需要Java,因为它必须在Android上运行,而且程序需要很多API调用。@Christian-你的计时有多快?如果你放一个安卓标签来指导答案,这也会有帮助。+1@Romain Hippeau:回答得很好,谢谢你提醒我RTJS有多快?正如我在问题a中所写的那样,每5毫秒读取一次,读数等于200hz。除了计算某些波的变换外,您没有说明应用程序应该做什么,或者它将对这些输入做什么。我想用我的回答说的是,你可能无法保证你能跟上你的时间表,那会有多糟糕?