问题:我有一组表现出周期性变化的测量值(时间、测量值、误差),我想用傅里叶级数形式拟合它们
其中 A0 是我的测量值的平均值,t 是时间,t0 是(已知)参考时间,P 是(已知)周期。我想拟合系数 A_k 和 phi_k。
这是我目前所拥有的:
# Find Fourier components
# nfourier is the number of fourier components
def fourier(coeffs, time_data, epoch, period, nfourier, A0):
import numpy as np
omega = 2.0*np.pi/period
fseries = np.zeros(len(time_data))
fseries.fill(A0)
for k in range(nfourier):
ak = coeffs[k]
phik = coeffs[k+1]
time_diff = time_data - epoch
fseries = fseries + ak * np.cos(k * omega * time_diff + phik)
return fseries
我估计残差如下:
def residuals(coeffs, measurement_data, time_data, error_data, epoch, period, nfourier, A0):
model = fourier(coeffs, time_data, epoch, period, nfourier, A0)
result = measurement_data - model
return result
然后我适合它:
def fit_it(coeffs, measurement_data, time_data, error_data, epoch, period, nfourier, A0):
from scipy.optimize import leastsq
opt_coeff = leastsq(residuals, coeffs, args=(measurement_data, time_data, error_data, epoch, period, nfourier, A0))
return opt_coeff
我不确定我在这里做错了什么,但也许专家可以提供一些建议。如果有人愿意提供帮助,我很乐意提供测试数据集。