Lomb-Scargle周期图的实现

时间:2014-10-26 13:31:48

标签: matlab signal-processing spectral

来自matlab官方网站,Lomb-Scargle周期图被定义为

http://www.mathworks.com/help/signal/ref/plomb.html#lomb

假设我们有一些随机信号,请说

 x=rand(1,1000);

该信号的平均值可以很容易地实现为

平均=平均(X); 方差可以实现为

>> average_vector=repmat(average,1,1000);
>> diff=x-average_vector;
>> variance= sum(diff.*diff)/(length(x)-1);

我该怎么办?我的意思是如何选择频率?计算时间偏移不是问题,让我们假设我们有时间向量

t=0:0.1:99.9;

因此时间矢量的总长度为1000,通常对于DFT,频率区间表示为2 * pi / N的乘数,其中N是信号的长度,但是这种情况呢?提前谢谢

1 个答案:

答案 0 :(得分:1)

the provided link to MATLAB documentation可以看出,该算法不依赖于特定的采样时间t k 选择。请注意,对于等间隔采样时间(如您所选),相同的链接表示:

  

偏移仅取决于测量时间,并且当时间间隔相等时消失。

所以,正如你所说的那样“计算时间偏移不是问题”。

类似于可以通过选择一组离散频率从Discrete-Time Fourier Transform (DTFT)获得的DFT,我们也可以选择 f[n] = n * sampling_rate/N(其中sampling_rate = 10为您选择的t k )。如果我们忽略n=mN的P LS (f [n])的值,其中m是任何整数(因为它的值是不正确的,至少在公式中发布在链接中),然后:

\sum_{k=1}^N \cos^2(2\pi f_n t_k) = \sum_{k=1}^N \sin^2(2\pi f_n t_k) = N/

因此对于实值数据样本:

P_{LS}(f_n) = \frac{1}{N\sigma^2} |Y(n)|^2

其中Y可以用您定义为的diff向量表示:

Y = fft(diff);

即如wikipedia所示,Lomb-Scargle方法主要用于不等距数据。