2017-05-09 6 views
0

私はwhelchメソッドを使用しようと、私はゼロ周波数だからPSDがゼロの結果なぜ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() 

異常であることがわかりました。 なぜ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

関連する問題