2015-11-05 94 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))。)