gpt4 book ai didi

python - 用傅里叶分量拟合时间序列 : estimating Fourier series coefficients

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:43 24 4
gpt4 key购买 nike

问题:我有一组表现出周期性变化的测量值(时间、测量值、误差),我想用以下形式的傅立叶级数拟合它们

enter image description here

其中 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

程序成功完成,但拟合似乎失败了,如下图所示: enter image description here

我不确定我在这里做错了什么,但也许专家可以提供一些建议。如果有人愿意提供帮助,我很乐意提供测试数据集。

最佳答案

我不明白傅里叶拟合背后的原因。我想您想知道数据的调制频率分量。我建议您每次都取数据的平均值并取 fft,它会让您更深入地了解数据的频谱。

就您的代码而言,我想发表两条评论。首先第k个元素的相位是第k+1个元素的幅度。其次,error_data 没有从函数残差中获取任何东西。你可以检查这些点。

这更像是评论,但我没有足够的声誉来发表评论。只是想帮忙。

问候

关于python - 用傅里叶分量拟合时间序列 : estimating Fourier series coefficients,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com