我正在使用fftw对具有采样率(每次获得新样本时更改)的信号进行FFT,大约为10 + -0.05Hz。我的输入信号有200个样本。我得到了100个复杂的nos输出。现在为了获得我的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个作品。
答案 0 :(得分:4)
是的,您需要在FFT之前使用窗口功能,否则您将遭受频谱泄漏(您的频谱会被涂抹)。
您的频谱分辨率仅为Fs / N = 10/200 = 0.05 Hz,因此您的100点频谱表示从0 Hz(DC)到5.0 Hz(Nyquist)的频率,每个“bin”的宽度为0.05赫兹。
请注意,采样率中的抖动会对结果频谱产生一些不可预测的影响 - 至少会有些不准确,分辨率可能会受到影响。
答案 1 :(得分:4)
由于每个DFT / FFT bin滤波器的阻带衰减要低得多,所以由于主瓣更宽/更大,窗口化会降低频率分辨率,但会降低干扰和噪声的影响。哪种影响更糟,取决于信号噪声比和/或分析信号中的干扰类型。在更高的预期噪声或干扰水平下,窗口更有可能是有用的。
通过使用高质量插值内核,远高于本底噪声的孤立频谱峰值的频率分辨率可以比1 DFT / FFT频段宽度更精细。根据所使用的窗口,分离具有最小3dB间隔间隙的两个单独峰值的分辨率大约为2至3.5个DFT / FFT区间宽度。没有窗口(例如矩形窗口)提供了在零噪声中解析2个间隔紧密的光谱峰值的最佳分辨率。