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
如果输入数组 x 和 y 形状不同。
参见
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()