我正在尝试对数据集执行Scipy FFT。基本上,我在时域上具有加速度(通过数值获得),而我只是试图执行傅立叶变换以获得频谱。我有一个理论表达式,可以在较小和较大的频率范围内进行傅立叶变换的加速度。对于大频率,傅立叶变换的加速度应成指数下降。但是,在初始衰减之后,我在图中出现了一个谷。以下是我的代码和图表
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
答案 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。该窗口没有任何旁瓣。
最后,如果您的信号是周期性的,并且帧的长度是周期的倍数,则不需要窗口!