如何解决MATLAB 的 pwelch 和 Python 的 SciPy welch 之间的比例差异
我在使用名为 welch (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.welch.html) 的 scipy.signal
方法使用 python 时遇到问题,该方法估计时间信号的频谱,因为它没有(完全)提供与 MATLAB 称为 pwelch (https://www.mathworks.com/help/signal/ref/pwelch.html) 的方法相同的输出,给定相同的参数(窗口类型(汉明)、窗口大小、重叠等)。下面是我的每种语言的代码(输入是真实信号):
MATLAB:
pxx_matlab = pwelch(w_in,4096,0.5*4096,4096)
(根据文档,MATLAB 的 pwelch 中的默认窗口是 hamming)
蟒蛇:
from scipy import signal
f,pxx = signal.welch(w_in,fs=16000,window='hamming',nperseg=4096,noverlap=2048,nfft=4096,detrend=False)
这是输入数据:
np.random.seed(0)
w_in = np.random.randn(16000*10)
(我不知道如何附加 CSV 文件)
如您所见,两个信号的不同之处在于缩放常数(几乎是一个常数),约为 34 dB (2544)。我试图将常数与采样频率 fs = 16000
、奈奎斯特频率 (8 kHz) 或窗口长度 4096
、重叠 2048
和它们的 10*np.log10
dB 对应项但没有有用。
你知道为什么会有一个恒定的比例差异吗?这个常数等于多少(作为参数的函数)?
编辑:常数 34 dB 似乎与使用的数据无关,因此它很可能是信号处理参数(fs、窗口长度、重叠等)的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。