2013-11-27 93 views
1

我正在嘗試在不均勻間隔的時間點中找到時間。
幸運的是lomb-scargle方法非常適合做到這一點。
但是輸出讓我感到困惑。假設一個sin(2*pi*t)曲線如下,我們應該期望一個尖峯在頻率= 1 Hz,但輸出偏差很大。任何人都可以在scipy中解釋lomb_scargle的含義嗎?

import numpy as np 
from scipy.signal import spectral 
import pylab as pl 

time = np.linspace(1, 1000, 100) 
intensity = np.sin(2*np.pi*time) 
freqs1 = np.linspace(0.01, 10, 1000) 
freqs2 = np.linspace(0.01, 10, 100) 
pm1 = spectral.lombscargle(time, intensity, freqs1) 
pm2 = spectral.lombscargle(time, intensity, freqs2) 

pl.subplot(211) 
pl.plot(freqs1, pm1) 
pl.subplot(212) 
pl.plot(freqs2, pm2) 
pl.show() 

spectra

回答

0

你的採樣率是太低分辨在範圍t = 1 ... 1000中的2 PI部件,所以你最終與許多aliasing。您需要大約10000點才能在範圍t = 1 ... 1000內對sin(2 pi t)進行採樣,以達到合理的精度。

要了解,請做plot(time, intensity)。之後,再用time = np.linspace(1, 1000, 10000)重做。

最後,請記住,Lomb-Scargle會根據角頻率給出結果。

相關問題