1

我正在使用 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 个作品。

4

2 回答 2

4

是的,您需要在 FFT 之前使用窗口函数,否则您将遭受频谱泄漏(您的频谱将被涂抹)。

您的频谱分辨率仅为 Fs / N = 10 / 200 = 0.05 Hz,因此您的 100 点频谱表示从 0 Hz(直流)到 5.0 Hz(奈奎斯特)的频率,每个“bin”的宽度为 0.05 Hz。

请注意,采样率中的抖动会对生成的频谱产生某种不可预测的影响——至少它会有些不准确,并且分辨率可能会受到影响。

于 2012-10-22T15:32:36.513 回答
4

由于主瓣更宽/更宽,加窗会降低频率分辨率,但由于每个 DFT/FFT bin 滤波器的阻带衰减要低得多,因此会降低干扰和噪声的影响。哪种效果更差取决于被分析信号中的信噪比和/或干扰类型。窗口更有可能在更高的预期噪声或干扰水平下有用。

通过使用高质量的插值内核,远高于本底噪声的孤立频谱峰值的频率分辨率可以比 1 DFT/FFT 二进制宽度精细得多。分离两个单独峰的分辨率,最小分离间隙为 3 dB,大约为 2 到 3.5 DFT/FFT bin 宽度,具体取决于所使用的窗口。没有窗口(例如矩形窗口)可以提供分辨零噪声中 2 个紧密间隔的光谱峰的最佳分辨率。

于 2012-10-22T16:50:41.350 回答