为什么scipy.signal.welch会抑制零频?
Why does scipy.signal.welch suppress zero frequency?
我尝试用whelch方法,发现零频不正常
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
n = 100000
s = np.ones(n)
f, psd = signal.welch(s, return_onesided=False)
plt.plot(f, psd)
plt.show()
因此结果 PSD 为零。
为什么scipy.signal.welch会抑制零频?
再看一下 the docstring for welch
特别注意 detrend
参数。
默认的detrend
是'constant'
,它在计算频谱之前从输入中减去平均值。要禁用去趋势,请使用 detrend=False
:
In [57]: from scipy.signal import welch
In [58]: from scipy.fftpack import fftshift
In [59]: n = 1000
In [60]: s = np.ones(n)
In [61]: f, psd = signal.welch(s, return_onesided=False, detrend=False)
In [62]: plot(fftshift(f), fftshift(psd))
Out[62]: [<matplotlib.lines.Line2D at 0x10f8b6dd8>]
我尝试用whelch方法,发现零频不正常
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
n = 100000
s = np.ones(n)
f, psd = signal.welch(s, return_onesided=False)
plt.plot(f, psd)
plt.show()
因此结果 PSD 为零。 为什么scipy.signal.welch会抑制零频?
再看一下 the docstring for welch
特别注意 detrend
参数。
默认的detrend
是'constant'
,它在计算频谱之前从输入中减去平均值。要禁用去趋势,请使用 detrend=False
:
In [57]: from scipy.signal import welch
In [58]: from scipy.fftpack import fftshift
In [59]: n = 1000
In [60]: s = np.ones(n)
In [61]: f, psd = signal.welch(s, return_onesided=False, detrend=False)
In [62]: plot(fftshift(f), fftshift(psd))
Out[62]: [<matplotlib.lines.Line2D at 0x10f8b6dd8>]