【问题标题】:Unexpected valley in Fourier Transformation using Scipy FFT使用 Scipy FFT 进行傅里叶变换的意外谷值
【发布时间】:2019-07-05 14:50:46
【问题描述】:

我正在尝试对我的数据集执行 Scipy FFT。基本上,我在时域有加速度(以数字方式获得),我只是想执行傅里叶变换,以获得频谱。我有一个小的和大频率限制的傅里叶变换加速度的理论表达式。对于大频率,傅立叶变换的加速度应该呈指数下降。但是,在初始衰减后,我在图表中得到了一个山谷。下面是我的代码和graph

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

【问题讨论】:

  • 数据在哪里?
  • @StephenRauch 这是一个大型数据集,每个 b 有 4096 个值。要我发布数据集吗?
  • 无论如何这里是 b=10 pastebin.com/pTvVx82d的数据
  • 我已经编辑了问题并为所有 b 添加了数据集。

标签: python numpy scipy fft


【解决方案1】:

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

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

Kaiser 窗的变换特征是主瓣和旁瓣被这些谷隔开。因此,结果也可能以翻译的山谷为特征。可以通过修改window = signal.kaiser(N, 30)中的30来测试:你能试试像0、5、6和8.6这样的数字吗?它应该将山谷从左向右或从右向左平移,因为它会修改主瓣的宽度。

如果你只是想摆脱深谷,你可以探索exponential window,最终组合成Hann window,形成Hann–Poisson window。此窗口没有任何旁瓣。

最后,如果你的信号是周期性的,并且帧的长度是周期的倍数,那么就不需要窗口了!

【讨论】:

  • 您好,很抱歉这么晚才回复。我开始从事另一个项目。即使使用 Hann-Poisson,我也无法摆脱这些山谷,并且开始认为这不是数字错误的产物,而是代表某种物理现象。
  • 加速器可能靠近振动模式的节点。这可以提供一种物理过滤。如果改变 b 会改变所研究结构的振动模式,或者如果改变 b 会改变加速度计的位置,这可能会成为一个合理的解释。
猜你喜欢
  • 1970-01-01
  • 2012-05-18
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多