我正在使用 fftw 对具有大约 10+-0.05Hz 的采样率(每次获得新样本时都会发生变化)的信号进行 FFT。我的输入信号有 200 个样本。我得到了 100 个复数的输出。现在要获得我的 fft 的分辨率并获得与 evry bin 对应的频率,我使用这个:
sampFreq = (float)numFrames*1000000/diffT;
a=sampFreq/numFrames; //freq resolution of each fft bin
b=a/2;
freq = a*index + b; // where index is the index of output bin
numFrames 是我对 fft (200) 的初始输入大小,而不是输出大小。我做对了还是错过了2倍?我还需要在这种情况下使用 Windowing(如以 ~10Hz 和 200 帧采样)
另请注意,我不是零填充我的信号,因为 fftw 文档说样本可以是较小素数的倍数,不一定只有 2,所以我猜有 200 个作品。