python scipy.signal.pwelch_Scipy-welch和matlabpwelch并没有提供相同的ans

我在python和化学信号方法称为welch(https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.welch.html),它估计时间信号的频谱,因为在给定相同参数(窗口大小、重叠等)的情况下,它(根本)不会提供与MATLAB称为pwelch的方法相同的输出。下面是我用每种语言编写的代码,输入文件和输出文件位于此处的链接中:

输入是一个二维数组,行是时间步,每列是一个信号段。在相应的列中输入的是相应的列。在

Python:import numpy as np

from scipy.signal import welch, get_window

input = np.genfromtxt('python_input.csv', delimiter=',')

fs = 128

window = get_window('hamming', fs*1)

ff,yy = welch(input, fs=fs, window = window, noverlap = fs/2, nfft=fs*2,

axis=0, scaling="density", detrend=False)

np.savetxt("python_spectrum.csv", 10*np.log10(yy), delimiter=",")

MATLAB软件:

^{pr2}$

我怀疑scipy是问题所在,因为它的输出在反映我之前使用过的滤波器(filterfilt为0.3到35hz的4阶巴特沃斯带通)方面没有意义,然而,MATLAB的输出确实:

这里有一些元素差异图

我试过用一个简单的正弦波,它在两种编程语言中都能很好地工作,所以我完全迷失了方向。在

你可能感兴趣的:(python)