2010-08-14 36 views
4

我想用Java編寫一個使用快速傅里葉變換的程序。 程序每隔5毫秒從傳感器讀取數據,並且應該根據最近5秒的數據每200毫秒對數據執行一次操作。Java中的傅立葉變換的實時計算

在Java中是否有一個好的庫,它提供了一種方法來進行傅立葉變換,而不必每次重新計算全部5秒?

+0

如果數據是動態的,您會希望重新計算傅立葉變換。您可以讓程序等待195毫秒,然後開始收集傅里葉變換的數據,以便在200毫秒後可以在最後5毫秒內完成。 – MrFox 2010-08-14 16:20:55

+0

我不是該領域的專家,但從我對FFT的理解中,我不認爲增量方法是可行的。 FFT相對較快 - 您是否知道在滑動窗口上重新計算FFT速度不夠快? – mdma 2010-08-14 16:35:12

+3

他們不是說過早優化是萬惡之源;) 也許我應該先用標準的FFT實現它。 – Christian 2010-08-14 18:09:39

回答

3

硬實時問題不是Java的正確應用。有太多的變量,如垃圾收集和線程不能保證在給定的時間間隔內發生,以使這成爲可能。如果足夠接近是可以接受的,它會起作用就時序而言,軟件的性能還取決於您使用的操作系統和硬件以及該盒上還運行着哪些其他程序。

有一個Real Time Java,對於我上面提到的問題,它有一個特殊的API。你不表示你正在使用它。它在很多方面都比普通Java還是一個不同的動物。

+0

我需要Java,因爲它必須在Android上運行,並且程序需要很多API調用。 – Christian 2010-08-14 17:48:20

+0

@Christian - 你的時間有多快?如果您將Android標籤用於指導答案,它也會有所幫助。 – 2010-08-14 17:57:38

+0

+1 @Romain Hippeau:很好的回答,感謝RTJS的領導 – bguiz 2010-08-15 11:05:33