2015-11-05 95 views
0

我正在編寫一款Android應用程序,用於測量一段時間內相機幀的亮度,並使用傅立葉分析計算心跳以找到波的頻率。問題是,我的頻譜分析是這樣的:亮度信號的傅里葉分析是否正確? (Android)

Spectral analysis (y-axis is magnitude, x-axis is index)

這是相當多的頻譜分析應該是什麼樣子(如正態分佈)的倒數。我可以準確地評估這個以找出最大量級的指數,或者這個頻譜是否顯示我的數據太嘈雜?

編輯: 這裏是我的相機數據的樣子(我對這個執行FFT): Luminance of Current Frame vs. Time

+0

你如何繪製FFT的輸出?大小?對數量級? –

+0

FFT的輸出只是數值,x軸是每個峯值的指數。 – Piglet

+0

我應該注意到我正在使用JTransforms Java庫在我的1D輸入上執行FFT。輸入在底部圖中顯示爲亮度值,輸出數組顯示在頂部圖中,其中x是樣本指數,y是數值。 – Piglet

回答

0

它看起來就像你有事情兩個問題在這裏:

1)FFT輸出通常將負頻率的值放在正頻率的右側,這似乎就是這種情況。因此,您需要將FFT的右半部分向左移動,並將freq=0放在中間。

2)在評論中,你說你正在繪製幅度,但顯然不是這種情況(幅度應該大於0並且對稱)。相反,你可能只是繪製真正的一部分。取而代之的是大小,或Re*Re + Im*Im,其中ReIm分別是實部和虛部。 (取決於你的號碼的形式,如Math.sqrt(Math.pow(a.re, 2) + Math.pow(a.im, 2))。)