5

新しい Scipy v0.11 は、スペクトル分析用のパッケージを提供します。残念ながら、ドキュメントはまばらで、利用可能な例はあまりありません。

赤ちゃんの例として、正弦波の周期発見をしようとしています。1残念ながら、予想ではなく の期間を予測してい2piます。何か案は?

# imports the numerical array and scientific computing packages
import numpy as np
import scipy as sp
from scipy.signal import spectral

# generates 100 evenly spaced points between 1 and 1000
time = np.linspace(1, 1000, 100)

# computes the sine value of each of those points
mags = np.sin(time)

# scales the sine values so that the mean is 0 and the variance is 1 (the documentation specifies that this must be done)
scaled_mags = (mags-mags.mean())/mags.std()

# generates 1000 frequencies between 0.01 and 1
freqs = np.linspace(0.01, 1, 1000)

# computes the Lomb Scargle Periodogram of the time and scaled magnitudes using each frequency as a guess
periodogram = spectral.lombscargle(time, scaled_mags, freqs)

# returns the inverse of the frequence (i.e. the period) of the largest periodogram value
1/freqs[np.argmax(periodogram)]

1これは、 の予想期間の代わりに返されます2pi ~= 1/0.6366。何か案は?

4

1 に答える 1

7

の最後の引数は、 docstringspectral.lombscargleによる角周波数であることに注意してください。

Parameters
----------
x : array_like
Sample times.
y : array_like
Measurement values.
freqs : array_like
Angular frequencies for output periodogram.
于 2012-11-12T18:45:19.940 に答える