0
我正在编写一款Android应用程序,用于测量一段时间内相机帧的亮度,并使用傅立叶分析计算心跳以找到波的频率。问题是,我的频谱分析是这样的:亮度信号的傅里叶分析是否正确? (Android)
这是相当多的频谱分析应该是什么样子(如正态分布)的倒数。我可以准确地评估这个以找出最大量级的指数,或者这个频谱是否显示我的数据太嘈杂?
我正在编写一款Android应用程序,用于测量一段时间内相机帧的亮度,并使用傅立叶分析计算心跳以找到波的频率。问题是,我的频谱分析是这样的:亮度信号的傅里叶分析是否正确? (Android)
这是相当多的频谱分析应该是什么样子(如正态分布)的倒数。我可以准确地评估这个以找出最大量级的指数,或者这个频谱是否显示我的数据太嘈杂?
它看起来就像你有事情两个问题在这里:
1)FFT输出通常将负频率的值放在正频率的右侧,这似乎就是这种情况。因此,您需要将FFT的右半部分向左移动,并将freq=0
放在中间。
2)在评论中,你说你正在绘制幅度,但显然不是这种情况(幅度应该大于0并且对称)。相反,你可能只是绘制真正的一部分。取而代之的是大小,或Re*Re + Im*Im
,其中Re
和Im
分别是实部和虚部。 (取决于你的号码的形式,如Math.sqrt(Math.pow(a.re, 2) + Math.pow(a.im, 2))
。)
你如何绘制FFT的输出?大小?对数量级? –
FFT的输出只是数值,x轴是每个峰值的指数。 – Piglet
我应该注意到我正在使用JTransforms Java库在我的1D输入上执行FFT。输入在底部图中显示为亮度值,输出数组显示在顶部图中,其中x是样本指数,y是数值。 – Piglet