【发布时间】:2017-08-11 00:45:48
【问题描述】:
我正在开发一个计步器应用程序,我正在对加速度计数据运行实时 fft,我在 Arduino 101 上使用 arduinoFFT (kosme) 库。
假设我的采样频率为 100Hz。我对身体的上下运动感兴趣,它与大约 1-4Hz 的步行或跑步频率相匹配。许多库,包括我正在使用的库,似乎都具有计算幅度函数。这有效地为我提供了一半使用幅度的 bin 数量(如果我输入 64 个样本,它将给我 32 个幅度)。
所以我的问题是这些幅度对应的频率是多少? 在库提供的示例代码中,频率计算如下:
for (int i=0; i<(noofbins>>1); i++) {
freq[i]=((i*samplingfreq)/(noofbins>>1));
}
我真的不明白为什么会这样,如果我完全傻了,请原谅我。此外,这确实给了我从 0 到 100Hz 的频率(我使用的采样频率)。有什么方法可以在不降低采样频率以“匹配”它的情况下改进 fft 关于感兴趣的频率的方法(这在这里是一个糟糕的主意)?
【问题讨论】:
-
在您的情况下,每个 FFT bin 的分辨率为
Fs / N = 100 / 64 = 1.5625 Hz- 因此 bin 索引 3 将对应于3 * 1.5625 = 4.6875 Hz的频率 - 有关详细信息,请参阅 linked duplicate answer。
标签: arduino signal-processing fft