编程语言
首页 > 编程语言> > python – 使用scipy.signal.spectral.lombscargle进行句点发现

python – 使用scipy.signal.spectral.lombscargle进行句点发现

作者:互联网

新的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.有任何想法吗?

解决方法:

请注意,spectrum.lombscargle的最后一个参数是根据docstring的角频率:

Parameters
----------
x : array_like
Sample times.
y : array_like
Measurement values.
freqs : array_like
Angular frequencies for output periodogram.

标签:python,numpy,scipy,scientific-computing,signal-processing
来源: https://codeday.me/bug/20190529/1180848.html