如何控制FFTW频率分档和分辨率

时间:2017-04-17 23:55:48

标签: fortran fft fftw spectrum

我正在编写一个代码来使用FFTW计算简单的实际数据转换。我想比较相同数据的FFTW和FT的频谱。我的DFT数据长度是5000.但是,即使我使用更大的FFTW大小(例如N=450000),我也无法获得所需的频率分辨率。换句话说,输出频谱中的每个频率区间之间存在很大差距。

这使我的频率间隔为1 /(deltat * N)= 1,154,700.5

有没有什么方法可以产生更小的频率而不会大幅增加FFT大小(N),这会牺牲速度。

1 个答案:

答案 0 :(得分:2)

请注意,大约1e6的频率分辨率只占wave_frequency 3e9的一小部分。也就是说,如果您想在给定的感兴趣频率(例如3e9)周围的小带宽内分析或处理频率,那么1e6可能代表该带宽的相当大一部分。然后诀窍是放大感兴趣的频段。这可以通过以下广泛步骤来实现:

  • 以感兴趣的频率为中心应用带通滤波器;
  • 将滤波后的信号频移到较低的中心频率(例如,使用Weaver SSB频移技术described here);
  • 对频移信号进行下采样(每M个采样一个)。这将增加deltat,从而为相同的FFT块大小提供更好的分辨率(降低频率区间的频率差)。