2014-07-08 67 views
0

我有2個包含時間和電壓的數組。我想在Java中將時域轉換爲頻域。我想使用FFT。如果有任何我可以使用的開源庫,請將它指向我。我做了一個研究,發現了很少的算法,但他們要求實部和虛部。如果有人對此有所瞭解,請告訴我如何在我的上下文中使用它。在Java中將時域轉換爲頻域

Code I have found so far

+0

是的,你想FFT,但我不熟悉可用於Java的軟件包來建議一個。 「真實」和「虛擬」值是FFT「頻域」結果的「一半」,並且實際上給出關於信號的「相位」的信息。但如果我考慮的話,我的頭就會爆炸。 –

+0

如果你不想/需要相位信息,那麼通常會將實值和虛值合併爲RMS(均方根)值 - 實數平方加虛平方的平方根。 –

+0

另請注意,通常多次運行FFT,可能每隔0.1秒進行一次音頻處理。這給出了頻譜隨時間變化的視圖。 –

回答

1

這裏是一個庫:

http://www.fftw.org/download.html

您也可以與Java使用R上。請參閱此鏈接:

Java-R integration?

如果你不熟悉的R檢查自己的主頁R-項目點組織(我不能發佈更多的鏈接)

雖然我沒有檢查的實施你鏈接到,你應該能夠使用虛擬零件的虛擬零來使用該虛擬零件。在這種情況下,您將「前進」,即將DIRECT設置爲從時域到頻域的真實變換。該函數將返回一個數組,其中包含偶數位置的實數部分,奇數部分的虛數部分。

+0

感謝您的詳細信息。它確實有幫助。所以我可以使用偶數位數作爲我的數組,因爲我提供了虛部爲0。我對麼?? – Dinesh

+0

你會用這樣的東西: double [] your_real_values = new double [sample_size]; double [] dummy_img_values = new double [sample_size]; //使用正確的值popuplate your_real_values數組 Arrays.fill(dummy_img_values,0.0); double [] fft_vals = FFTbase.fft(your_real_values,dummy_img_values,true); 返回數組的大小爲2 * sample_size,fft_vals [i]包含頻率的實部,如果我甚至是img部分。 – skarist