正弦拟合之和

时间:2016-04-24 17:59:42

标签: python linear-regression curve-fitting statsmodels

我在下面找到了一些示例数据,我试图使两个曲线拟合。第一个是基于正弦和余弦的总和,我能够使用statsmodels OLS函数。

enter image description here

ny = len(y_arr)
nparams = 5

xa1 = np.cos(2*np.pi*1*x_arr)
xb1 = np.sin(2*np.pi*1*x_arr)
xa2 = np.cos(2*np.pi*2*x_arr)
xb2 = np.sin(2*np.pi*2*x_arr)

matr = np.ones((ny,nparams),dtype=float)
matr[:,1] = xa1
matr[:,2] = xb1
matr[:,3] = xa2
matr[:,4] = xb2

model = sm.OLS(y_arr, matr)
results = model.fit()
print(results.summary())

这给出了系数a0 = 1.1463,a1 = -3.928,b1 = 0.5352,a2 = -0.4091,b2 = -0.3514

但是,现在我想利用这些信息来计算出给定幅度和相位的正弦函数之和的拟合,即:

enter image description here

从我所看到的情况来看,当必须同时计算振幅和相位时,OLS无法处理正弦拟合的总和。是否还有其他任何人曾用过类似的套装?

1 个答案:

答案 0 :(得分:0)

这些系列密切相关:

A_k = sqrt(a_k**2 + b_k**2)
phi_k = -atan(b_k/a_k)

因此,在计算a_kb_k后,您可以轻松获得A_kphi_k 使用上面的转换。