我有一个真实的及时信号:
我只是想计算它的功率谱,即信号自相关的傅里叶变换,在这种情况下也是一个纯实数和正数。为此,我只需编写:
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 函数输出负值,这与上面链接中讨论的理论相反,我不太明白为什么。对出了什么问题有任何想法吗?