如何计算 fft 输出中的频率?
How to figure out the frequencies in an fft output?
我正在开发计步器应用程序,我正在 运行 对加速度计数据进行 real-time fft,我在 Arduino 101 上使用 arduinoFFT (kosme) 库。
假设我的采样频率为 100Hz。我对 body 的上下运动感兴趣,它与步行或 运行 频率在 1-4Hz 左右相匹配。许多库,包括我正在使用的库,似乎都具有计算幅度函数。这有效地为我提供了一半的 bin 使用的振幅数(如果我输入 64 个样本,它将给我 32 个振幅)。
所以我的问题是这些振幅对应于什么频率?
在库提供的示例代码中,频率计算如下:
for (int i=0; i<(noofbins>>1); i++) {
freq[i]=((i*samplingfreq)/(noofbins>>1));
}
我真的不明白为什么会这样,如果我对此完全愚蠢,请原谅。此外,这确实给了我从 0 到 100Hz 的频率(我使用的采样频率)。有没有什么方法可以在不将采样频率降低到 'match' 的情况下改进有关感兴趣频率的 fft(这将是一个糟糕的主意)?
what frequencies does these amplitudes correspond to?
我不确定你从哪里得到这个例子,以及为什么要除以 noofbins>>1
。每个 bin 频率的正确公式为:
for (int i=0; i<(noofbins>>1); i++) {
freq[i]=((i*samplingfreq)/noofbins);
}
这将为您提供从 0 到奈奎斯特频率(采样频率的一半)的频率。在您的具体情况下,这将从 0 到 50Hz(以 100/64 = 1.5625Hz 为增量)。
Is there any way of refining the fft about the frequency of interest without lowering the sampling frequency [...]?
捕获更多数据,即增加用作 FFT 输入的样本数量,将导致 FFT 的频率分辨率更高。例如,使用 128 个样本(略多于 1 秒的数据)而不是 64 个样本,会使频率增量从 1.5625Hz 下降到 0.78125Hz。进一步将样本数量增加到 256(约 2.5 秒)会将频率增量减少到 ~0.39Hz。
我正在开发计步器应用程序,我正在 运行 对加速度计数据进行 real-time fft,我在 Arduino 101 上使用 arduinoFFT (kosme) 库。
假设我的采样频率为 100Hz。我对 body 的上下运动感兴趣,它与步行或 运行 频率在 1-4Hz 左右相匹配。许多库,包括我正在使用的库,似乎都具有计算幅度函数。这有效地为我提供了一半的 bin 使用的振幅数(如果我输入 64 个样本,它将给我 32 个振幅)。
所以我的问题是这些振幅对应于什么频率? 在库提供的示例代码中,频率计算如下:
for (int i=0; i<(noofbins>>1); i++) {
freq[i]=((i*samplingfreq)/(noofbins>>1));
}
我真的不明白为什么会这样,如果我对此完全愚蠢,请原谅。此外,这确实给了我从 0 到 100Hz 的频率(我使用的采样频率)。有没有什么方法可以在不将采样频率降低到 'match' 的情况下改进有关感兴趣频率的 fft(这将是一个糟糕的主意)?
what frequencies does these amplitudes correspond to?
我不确定你从哪里得到这个例子,以及为什么要除以 noofbins>>1
。每个 bin 频率的正确公式为:
for (int i=0; i<(noofbins>>1); i++) {
freq[i]=((i*samplingfreq)/noofbins);
}
这将为您提供从 0 到奈奎斯特频率(采样频率的一半)的频率。在您的具体情况下,这将从 0 到 50Hz(以 100/64 = 1.5625Hz 为增量)。
Is there any way of refining the fft about the frequency of interest without lowering the sampling frequency [...]?
捕获更多数据,即增加用作 FFT 输入的样本数量,将导致 FFT 的频率分辨率更高。例如,使用 128 个样本(略多于 1 秒的数据)而不是 64 个样本,会使频率增量从 1.5625Hz 下降到 0.78125Hz。进一步将样本数量增加到 256(约 2.5 秒)会将频率增量减少到 ~0.39Hz。