使用Scipy FFT的傅立叶变换中的意外谷

时间:2019-02-12 02:19:34

标签: python numpy scipy fft

我正在尝试对数据集执行Scipy FFT。基本上,我在时域上具有加速度(通过数值获得),而我只是试图执行傅立叶变换以获得频谱。我有一个理论表达式,可以在较小和较大的频率范围内进行傅立叶变换的加速度。对于大频率,傅立叶变换的加速度应成指数下降。但是,在初始衰减之后,我在图中出现了一个谷。以下是我的代码和图表enter image description here

a_w = []
for k in range(len(b)): # b is paramter to be varied
 window = signal.kaiser(N, 30) # I am not sure about using Kaiser wind
 ft = fft(solaccarr[k]*window)
 ft = np.abs(ft[:N // 2])*1/N
 freq = fftfreq(N, T)[:N // 2]
 xf = np.linspace(0.0, 1.0 / (2.0 * float(T)), N // 2)
 a_w.append(ft)

我正在以对数-对数比例绘制图形。我的问题是,是否可以通过适当使用窗口或其他任何方法来消除图形中的纽结? 这是我使用的dataset

1 个答案:

答案 0 :(得分:1)

翻译后,这些谷可能对应于Kaiser window 的主瓣的末端。

如果输入信号具有有限数量的明确定义的频率(例如,两个正弦波之和),则其傅立叶变换就是狄拉克梳。将信号和窗口相乘对应于将信号的DFT变换与窗口的DFT变换进行卷积。由于与Dirac信号卷积对应于一个平移,因此该过程的结果是该窗口的平移DFT变换的有限和。

Kaiser窗口的变换具有一个主瓣和旁瓣,这些瓣被这些谷分开。因此,结果可能还包含平移的山谷。可以通过修改30中的window = signal.kaiser(N, 30)进行测试:您可以尝试使用0、5、6和8.6这样的数字吗?当修改主瓣的宽度时,它应从左向右或从右向左平移谷底。

如果您只想摆脱深谷,可以探索exponential window,最终将它们合并为Hann window以形成Hann–Poisson window。该窗口没有任何旁瓣。

最后,如果您的信号是周期性的,并且帧的长度是周期的倍数,则不需要窗口!