一些信号处理/ FFT问题

sta*_*010 5 java audio signal-processing fft accelerometer

我需要一些帮助确认一些基本的DSP步骤.我正在实施一些智能手机加速计传感器信号处理软件,但我之前没有使用过DSP.

我的程序以32 Hz的频率实时采集加速度计数据.输出应该是信号的主要频率.

我的具体问题是:

  1. 从实时流中,我正在收集一个具有50%重叠的256个样本窗口,正如我在文献中所读到的那样.也就是说,我一次添加128个样本以填充256个样本窗口.这是正确的方法吗?

  2. 下面的第一个图显示了一个这样的256个样本窗口.第二个图显示了应用Hann/Hamming 窗口函数后的示例窗口.我已经读过应用窗口函数是一种典型的方法,所以我继续前进并做到了.我应该这样做吗?

  3. 第三个窗口显示FFT库输出的功率谱(?).我真的在拼凑我读过的点点滴滴.我是否正确理解频谱上升到采样率的1/2(在这种情况下为16 Hz,因为我的采样率为32 Hz),每个频谱点的值是频谱[i] = sqrt(real [我] ^ 2 +想象[i] ^ 2)?这是正确的吗?

  4. 假设我在问题3中所做的是正确的,我的理解是正确的,第三个数字显示大约3.25赫兹和8.25赫兹的主要频率?我知道从收集大约3赫兹运行的数据时,3.25赫兹的峰值似乎是正确的.因此必须有一些噪声,其他因素导致(错误的)峰值在8.25 Hz.是否有任何过滤器或其他方法可以用来平滑这个和其他尖峰?如果没有,有没有办法从错误的尖峰中确定"真正的"尖峰?

在此输入图像描述

Luk*_*uke 0

回答你的几个问题:

是的,您应该应用窗口函数。这里的想法是,当您开始和停止对现实世界信号进行采样时,您所做的就是应用锐利的矩形窗口。Hann 和 Hamming 窗在减少不需要的频率方面要好得多,所以这是一个很好的方法。

是的,最强的频率在 3 和 8 Hz 左右。我不认为 8 Hz 尖峰是错误的。使用如此短的数据集,您几乎肯定无法控制信号的确切频率。