2017-05-09 3 views
0

나는 방법을 whelch 사용하려고 나는 제로 주파수가 비정상왜 scipy.signal.welch가 제로 주파수를 억제합니까?

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가 주파수를 제로로 억제하는 이유는 무엇입니까?

답변

1

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>] 

plot