无法获得匹配的 scipy.signal.welch 窗口结果

问题描述

我很困惑为什么我不能得到这个 scipy.signal.welch 计算的结果来匹配。首先,我创建一个正弦信号和 Blackman 窗口:

from matplotlib import pyplot as plt
from scipy.signal import welch
from numpy.fft import fft
from scipy.signal.windows import *


t_max = 1
dt = 0.0001
nSamples = int(t_max/dt)

t = np.linspace(0,t_max,nSamples,False)
x = np.sqrt(2)*100*np.cos(2*np.pi*50*t)

w = blackman(len(x))
plt.figure()
plt.plot(t,x)

首先,我使用带有内置 Blackman 窗口的 Welch 进行 DFT,我得到了我期望的结果,在基频处有一个大峰值和一个遥远的平坦的本底噪声。

f,sxx=welch(x,1/dt,nperseg=nSamples,detrend=False,scaling='spectrum',window='blackman')
plt.figure()
plt.semilogy(f,sxx)

Attempt 1 Results

如果我做同样的事情,除了在函数之外应用窗口,我会得到更多的衰减并且没有可辨别的本底噪声。

f,sxx=welch(x*w,window='Boxcar')
plt.figure()
plt.semilogy(f,sxx)

Attempt 2 Results

我完全被难住了。我错过了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)