Python 使用Scipy FFT的傅里叶变换中的意外谷
我正在尝试对数据集执行Scipy FFT。基本上,我得到了时域内的加速度,我只是想做傅里叶变换,得到频谱。我有一个在小频率和大频率极限下的傅里叶变换加速度的理论表达式。对于较大的频率,傅里叶变换的加速度应呈指数下降。然而,我在图中得到了一个谷,在初始衰减之后。下面是我的代码和图表 我正在用对数标度绘制图表。我的问题是,是否有可能通过适当使用windows或任何其他技术来消除图形中的扭结? 这里是我使用的这些谷可能对应于后平移主瓣的末端 如果输入信号具有有限个明确定义的频率,例如:两个正弦波的总和,则其傅里叶变换为狄拉克梳。将信号与窗口相乘对应于将信号的DFT变换与窗口的DFT变换卷积。由于与Dirac信号的卷积对应于平移,因此该过程的结果是窗口的平移DFT变换的有限和 Kaiser窗的变换以主瓣和副瓣为特征,由这些波谷隔开。因此,结果可能也会有变化。它可以通过修改window=signal.kaiserN,30中的30来测试:你能试试像0、5、6和8.6这样的数字吗?它应该将山谷从左向右或从右向左平移,因为它修改了主瓣的宽度 如果你只是想摆脱深谷,你可以探索最终结合成一个形成一个。此窗口没有任何旁瓣Python 使用Scipy FFT的傅里叶变换中的意外谷,python,numpy,scipy,fft,Python,Numpy,Scipy,Fft,我正在尝试对数据集执行Scipy FFT。基本上,我得到了时域内的加速度,我只是想做傅里叶变换,得到频谱。我有一个在小频率和大频率极限下的傅里叶变换加速度的理论表达式。对于较大的频率,傅里叶变换的加速度应呈指数下降。然而,我在图中得到了一个谷,在初始衰减之后。下面是我的代码和图表 我正在用对数标度绘制图表。我的问题是,是否有可能通过适当使用windows或任何其他技术来消除图形中的扭结? 这里是我使用的这些谷可能对应于后平移主瓣的末端 如果输入信号具有有限个明确定义的频率,例如:两个正弦波的总和
最后,如果您的信号是周期性的,并且帧的长度是周期的倍数,则不需要窗口 数据在哪里?@stephernauch这是一个大数据集,每个b有4096个值。你想让我发布数据集吗?不管怎样,这是b=10的数据。我已经编辑了这个问题并为所有b添加了数据集。嗨,很抱歉这么晚才回复。我开始做另一个项目。即使有汉恩·泊松(Hann Poisson),我也无法摆脱这些山谷,我开始认为这不是数字误差的产物,而是物理现象。加速度计可能在振动模式的节点附近。这可以提供一种物理过滤。如果改变b改变了所研究结构的振动模式,或者改变b改变了加速计的位置,这可能成为一个合理的解释。
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)