當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy signal.lombscargle用法及代碼示例


本文簡要介紹 python 語言中 scipy.signal.lombscargle 的用法。

用法:

scipy.signal.lombscargle(x, y, freqs)#

計算Lomb-Scargle 周期圖。

Lomb-Scargle 周期圖由 Lomb [1] 開發,並由 Scargle [2] 進一步擴展,以發現和測試時間采樣不均勻的弱周期信號的重要性。

什麽時候標準化為 False (默認) 計算的周期圖未歸一化,它取值(A**2) * N/4對於振幅為 A 的諧波信號,N 足夠大。

當 normalize 為 True 時,計算的周期圖由圍繞恒定參考模型(為零)的數據殘差進行歸一化。

輸入數組應該是一維的並且將被強製轉換為 float64。

參數

x array_like

采樣時間。

y array_like

測量值。

freqs array_like

輸出周期圖的角頻率。

precenter 布爾型,可選

通過減去平均值預中心測量值。

normalize 布爾型,可選

計算歸一化周期圖。

返回

pgram array_like

Lomb-Scargle 周期圖。

拋出

ValueError

如果輸入數組 x 和 y 的形狀不同。

注意

由於 Townsend [3],該子例程使用稍微修改的算法計算周期圖,該算法允許對每個頻率僅使用一次通過輸入數組來計算周期圖。

對於大量樣本和頻率,算法運行時間大致為 O(x * freqs) 或 O(N^2)。

參考

[1]

N.R. Lomb“不等距數據的最小二乘頻率分析”,天體物理學和空間科學,第 39 卷,第 447-462 頁,1976 年

[2]

J.D. Scargle“天文時間序列分析研究。 II - 不均勻間隔數據的頻譜分析的統計方麵”,《天體物理學雜誌》,第 263 卷,第 835-853 頁,1982 年

[3]

R.H.D. Townsend,“使用圖形處理單元快速計算Lomb-Scargle 周期圖。”,天體物理學雜誌增刊係列,第 191 卷,第 247-253 頁,2010

例子

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

首先為信號定義一些輸入參數:

>>> A = 2.
>>> w0 = 1.  # rad/sec
>>> nin = 150
>>> nout = 100000

隨機生成采樣時間:

>>> x = rng.uniform(0, 10*np.pi, nin)

繪製選定時間的正弦波:

>>> y = A * np.cos(w0*x)

定義要計算周期圖的頻率數組:

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

計算Lomb-Scargle 周期圖:

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

現在繪製輸入數據圖:

>>> fig, (ax_t, ax_w) = plt.subplots(2, 1, constrained_layout=True)
>>> ax_t.plot(x, y, 'b+')
>>> ax_t.set_xlabel('Time [s]')

然後繪製歸一化周期圖:

>>> ax_w.plot(w, pgram)
>>> ax_w.set_xlabel('Angular frequency [rad/s]')
>>> ax_w.set_ylabel('Normalized amplitude')
>>> plt.show()
scipy-signal-lombscargle-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.lombscargle。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。