Пример #1
0
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)')
Пример #2
0
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:]: