当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cusignal.spectral_analysis.spectral.lombscargle用法及代码示例


用法:

cusignal.spectral_analysis.spectral.lombscargle(x, y, freqs)

计算Lomb-Scargle 周期图。 Lomb-Scargle 周期图由 Lomb [1] 开发,并由 Scargle [2] 进一步扩展,以发现和测试具有不均匀时间采样的弱周期信号的重要性。当 normalize 为 False(默认)时,计算的周期图未归一化,对于具有足够大 N 的振幅 A 的谐波信号,它采用值 (A**2) * N/4。当 normalize 为 True 时,计算的周期图由残差归一化围绕恒定参考模型(为零)的数据。输入数组应该是一维的并且将被强制转换为 float64。

参数

xarray_like

采样时间。

yarray_like

测量值。

freqsarray_like

输出周期图的角频率。

precenter布尔型,可选

通过减去平均值预中心振幅。

normalize布尔型,可选

计算归一化周期图。

返回

pgramarray_like

Lomb-Scargle 周期图。

抛出

ValueError

如果输入数组 xy 的形状不同。

注意

由于 Townsend [3],此子例程使用稍微修改的算法计算周期图,该算法允许仅使用每个频率的输入数组单次通过来计算周期图。对于大量样本和频率,算法运行时间大致为 O(x * freqs) 或 O(N^2)。

参考

1

N.R. Lomb “Least-squares frequency analysis of unequally spaced data”, Astrophysics and Space Science, vol 39, pp. 447-462, 1976

2

J.D. Scargle “Studies in astronomical time series analysis. II - Statistical aspects of spectral analysis of unevenly spaced data”, The Astrophysical Journal, vol 263, pp. 835-853, 1982

3

R.H.D. Townsend, “Fast calculation of the Lomb-Scargle periodogram using graphics processing units.”, The Astrophysical Journal Supplement Series, vol 191, pp. 247-253, 2010

例子

>>> import cusignal
>>> import cupy as cp
>>> import matplotlib.pyplot as plt
First define some input parameters for the signal:
>>> A = 2.
>>> w = 1.
>>> phi = 0.5 * cp.pi
>>> nin = 1000
>>> nout = 100000
>>> frac_points = 0.9 # Fraction of points to select
Randomly select a fraction of an array with timesteps:
>>> r = cp.random.rand(nin)
>>> x = cp.linspace(0.01, 10*cp.pi, nin)
>>> x = x[r >= frac_points]
Plot a sine wave for the selected times:
>>> y = A * cp.sin(w*x+phi)
Define the array of frequencies for which to compute the periodogram:
>>> f = cp.linspace(0.01, 10, nout)
Calculate Lomb-Scargle periodogram:
>>> pgram = cusignal.lombscargle(x, y, f, normalize=True)
Now make a plot of the input data:
>>> plt.subplot(2, 1, 1)
>>> plt.plot(cp.asnumpy(x), cp.asnumpy(y), 'b+')
Then plot the normalized periodogram:
>>> plt.subplot(2, 1, 2)
>>> plt.plot(cp.asnumpy(f), cp.asnumpy(pgram))
>>> plt.show()

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cusignal.spectral_analysis.spectral.lombscargle。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。