【问题标题】:Power spectrum incorrectly yielding negative values功率谱错误地产生负值
【发布时间】:2017-07-28 14:09:57
【问题描述】:

我有一个实时信号:

我只是想计算它的功率谱which is the Fourier transform of the autocorrelation of the signal, and is also a purely real and positive quantity in this case。为此,我只需写:

import numpy as np
from scipy.fftpack import fft, arange, rfftfreq, rfft 
from pylab import *

lags1, c1, line1, b1 = acorr(((Y_DATA)), usevlines=False, normed=True, maxlags=3998, lw=2)
Power_spectrum = (fft(np.real(c1)))
freqs = np.fft.fftfreq(len(c1), dx)
plt.plot(freqs,Power_spectrum)
plt.xlabel('f (Hz)')
plt.xlim([-20000,20000])
plt.show()

但输出给出:

具有负值输出。虽然如果我只是简单地在 y 轴上取数据的绝对值并绘制它(即np.abs(Power_spectrum)),那么输出是:

这正是我所期望的。虽然为什么这只能通过获取我的功率谱的绝对值来解决?我检查了我的自相关并绘制了它 - 它似乎按预期工作并且与其他人计算的结果相匹配。

虽然看起来很奇怪的是我进行 FFT 时的下一步。 FFT 函数输出负值,这与上面链接中讨论的理论相反,我不太明白为什么。对出了什么问题有任何想法吗?

【问题讨论】:

  • 可能是fft.fftshift 问题?
  • @PaulPanzer 你介意扩展吗?例如,您是说 FFT 没有正确考虑自相关的时间轴吗?在上面的代码中,是不是简单地假设np.real(c1)中的item之间的间距与c1相同(即元素0是第一个,元素1是第二个,等等)?
  • 好吧,既然您似乎在说光谱的大小是可以的,但不是复杂的论点;这正是时域变化的影响。如果您的自相关图居中,那么这是错误的,因为如果我没记错,“fft 坐标”中的零不在中心,而是在最左边。由于这种差异是一个常见的头痛问题,因此有这个便利功能fftshift
  • @PaulPanzer 感谢您的澄清。因此,当我将 x 轴更改为 np.fft.fftshift(freqs) 并将 y 轴更改为 fftshift(fft(ifftshift(c1))) 时,它似乎确实有效,并且给了我与简单地取绝对值相同的答案。该文档确实提供了一些信息,尽管我仍然有点不确定为什么确切地应用ifftshift 然后fftshift 解决了这个问题。有什么想法吗?

标签: numpy scipy signal-processing fft spectrum


【解决方案1】:

功率谱是自相关的 FFT,但这不是一种有效的计算方法。

无论如何,自相关可能是用 FFT 和 iFFT 计算的。

功率谱只是 FFT 系数的平方幅度。

改为这样做,这样总工作量将是 1 个 FFT 而不是 3 个。

【讨论】:

  • 感谢您的回复,我同意它最终是等效的(在上面的链接中演示了)。虽然我想知道为什么我采用自相关然后 FFT 的方法不起作用(即我应用 FFT 本身时出错)。
  • 您可能需要对自相关数据执行循环移位,以便在 FFT 之前将 0 滞后系数变为索引 0。但是取 FFT 结果的 abs() 做同样的事情。
  • 也许这是我误解了一个概念,但是为什么0-滞后系数必须是索引0? FFT 本质上不是捕获自相关(或任何一般函数)的周期分量,与任何水平平移无关吗?
  • 不,FFT 捕获整个信号。你知道肯定是这样,因为如果你做一个 iFFT,你会得到同样的信号。分量的“水平平移”在系数的相位中被捕获
【解决方案2】:

fft 产生一个复杂的结果(实部和虚部表示频谱的幅度和相位)。您必须取复矢量的(平方)幅度才能获得功率谱。

【讨论】:

  • 因为自相关是对称的,所以它的 FFT 只包括实部......如果你把 0 放在正确的地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 2013-10-18
  • 2017-07-29
相关资源
最近更新 更多