xd = np.arange('1990-01-01', '2000-01-01', dtype='datetime64[D]') xx = (xd - np.datetime64('1990-01-01')).astype(np.float) x = xx x = np.concatenate([x[:700], x[1400:]]) prob = 0.9 x = x[np.random.rand(len(x)) >= 0.9] y = 5 * np.cos(x*2*np.pi/365)+3 * np.cos((x+120)*2*np.pi/365*2) + \ 4 * np.cos((x+60)*2*np.pi/365/4) # y = 5*np.sin(x*2*np.pi/365) y = y - np.mean(y) ls = LombScargle(x, y) # freq = np.arange(1, len(xd))/len(xd) freq = np.fft.fftfreq(len(xd)) power = ls.power(freq) p = ls.model_parameters(1 / 365) mat = ls.design_matrix(1 / 365) ym = np.zeros([len(freq), len(x)]) yp = np.zeros([len(freq), len(x)]) for k, f in enumerate(freq[1:-1]): ym[k, :] = ls.model(x, f) yp[k, :] = ym[k, :] * ls.power(f) yp = yp # yy = yy-ls.offset()/2 fig, axes = plt.subplots(3, 1, figsize=(8, 6)) axes[0].plot(x, y, '--*') axes[0].plot(x, np.sum(ym, axis=0) / 2 * (len(x) / len(xx)), '-r') axes[0].set_xlabel('day') axes[1].plot(freq, power) axes[1].set_ylabel('power') axes[1].set_xlabel('frequency (angular)')
import matplotlib.pyplot as plt import importlib import pandas as pd import numpy as np import os import time # test x = np.arange(5) y = np.random.random(5) ls = LombScargle(x, y) freq = 2 / 5 p = ls.model_parameters(freq) mat = ls.design_matrix(freq) yp = ls.model(x, freq) power = ls.power(freq, normalization='psd') offset = ls.offset() a = np.fft.fft(y) yp1 = p[0] + p[1] * np.sin(2 * np.pi * freq * x) + p[2] * np.cos( 2 * np.pi * freq * x) + ls.offset() mat np.sin(2 * np.pi * freq * x) np.cos(2 * np.pi * freq * x) yp1 = yp * 0 for f in list(x / 5)[1:]: