python(scipy.signal.welch)中的Welches方法是否使用了截断或数字抗混叠滤波?

pbwdgjma  于 2022-11-09  发布在  Python
关注(0)|答案(1)|浏览(163)

Power spectral density plot
在功率谱密度估计中,如上所示(reference),则在右端发生滚降频率接近采样频率的一半(即奈奎斯特频率)(类似于锐截止)(在上面的例子中接近90 Hz)。这是否是由python中的“scipy.signal.welch”的某些特定功能引起的?例如,每个样本的点数,窗口技术,截断,还是重叠?
先谢谢你。

q5iwbnjs

q5iwbnjs1#

最有可能的原因是抗混叠滤波器造成的。Welch方法不会造成截断。
你可以测试它自己,做了小片段,比较psd与abs(fft(x))的两个信号(100和500Hz在1kHz采样频率)。韦尔奇方法不削减500Hz。

import scipy.signal
import numpy as np
import matplotlib.pyplot as plt

# making highest frequency signal 1, -1, 1, -1

signal1 = (np.arange(1000) % 2) * 2 - 1
signal2 = np.sin(2*np.pi*100*np.linspace(0, 1, 1000))
signal = signal1 + signal2

psd = np.abs(np.fft.fft(signal))
freq_domain, psd_welch = scipy.signal.welch(signal, scaling='density')
psd_welch = psd_welch * 6  # changing scale to compare for easier comparison on plot

plt.figure()
plt.plot(np.linspace(0, 1, len(psd)), psd)
plt.plot(freq_domain, psd_welch, 'r--')
plt.show()

相关问题