scipy.signal.lombscargle

scipy.signal.lombscargle(x, y, freqs)[源代码]

计算Lomb-Scarger周期图。

Lomb-Scargl型周期图是由Lomb开发的 [1] 并由斯卡格尔进一步延伸 [2] 寻找和检验具有不均匀时间采样的弱周期信号的显著性。

什么时候 规格化 为FALSE(默认值),则计算的周期图未标准化,它采用值 (A**2) * N/4 对于足够大的N,振幅为A的谐波信号。

什么时候 规格化 如果为True,则计算的周期图由恒定参考模型周围的数据残差(零点)归一化。

输入数组应该是一维的,并将强制转换为Float64。

参数
xarray_like

采样时间。

yarray_like

测量值。

freqsarray_like

输出周期图的角频率。

precenter布尔值,可选

通过减去平均值来确定前置中测量值。

normalize布尔值,可选

计算归一化周期图。

退货
pgramarray_like

Lomb-Scargl型周期图。

加薪
ValueError

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

参见

istft

短时傅里叶逆变换

check_COLA

检查是否满足常量重叠添加(Cola)约束

welch

韦尔奇方法的功率谱密度

spectrogram

韦尔奇(氏)法频谱图

csd

韦尔奇方法的互谱密度

注意事项

由于Townsend的原因,此子例程使用稍作修改的算法计算周期图 [3] 这允许仅使用通过每个频率的输入阵列的单次通过来计算周期图。

对于大量的样本和频率,算法的运行时间大致为O(x*freqs)或O(N^2)。

参考文献

1

N.R.Lomb“不等间隔数据的最小二乘频率分析”,“天体物理和空间科学”,第39卷,第447-462页,1976年。

2

J.D.斯卡格尔:“天文时间序列分析研究。II-非均匀分布数据的谱分析的统计方面”,“天体物理杂志”,第263卷,第835-853页,1982年。

3

R.H.D.Townsend,“使用图形处理单元快速计算Lomb-Scargl型周期图”,“天体物理杂志增刊系列”,第191卷,第247-253页,2010年。

示例

>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()

首先定义信号的一些输入参数:

>>> A = 2.
>>> w = 1.
>>> phi = 0.5 * np.pi
>>> nin = 1000
>>> nout = 100000
>>> frac_points = 0.9  # Fraction of points to select

随机选择带有时间步长的数组的一小部分:

>>> r = rng.standard_normal(nin)
>>> x = np.linspace(0.01, 10*np.pi, nin)
>>> x = x[r >= frac_points]

绘制选定时间的正弦波:

>>> y = A * np.sin(w*x+phi)

定义要计算周期图的频率数组:

>>> f = np.linspace(0.01, 10, nout)

计算Lomb-Scarger周期图:

>>> import scipy.signal as signal
>>> pgram = signal.lombscargle(x, y, f, normalize=True)

现在绘制输入数据的曲线图:

>>> plt.subplot(2, 1, 1)
>>> plt.plot(x, y, 'b+')

然后绘制归一化周期图:

>>> plt.subplot(2, 1, 2)
>>> plt.plot(f, pgram)
>>> plt.show()
../../_images/scipy-signal-lombscargle-1.png