Python 用scipy优化曲线拟合求解余弦函数的偏移参数问题

Python 用scipy优化曲线拟合求解余弦函数的偏移参数问题,python,scipy,curve-fitting,least-squares,Python,Scipy,Curve Fitting,Least Squares,我试图求解余弦函数的相位偏移。我正在寻找一个介于[0,2*pi]之间的值 为了使用scipy.optimize.curvefit探索这一点,我创建了一个玩具函数,如下所示: import scipy.optimize as optimize import numpy as np import matplotlib.pyplot as plt # DATA angles = np.array([0, 45, 90, 135, 180, 225, 270, 315]) angles = np.ra

我试图求解余弦函数的相位偏移。我正在寻找一个介于[0,2*pi]之间的值

为了使用scipy.optimize.curvefit探索这一点,我创建了一个玩具函数,如下所示:

import scipy.optimize as optimize
import numpy as np
import matplotlib.pyplot as plt

# DATA
angles = np.array([0, 45, 90, 135, 180, 225, 270, 315])
angles = np.radians(angles)
offset = np.radians(176)
data = np.cos(np.radians(np.linspace(0,315,8))-offset)

plt.plot(np.degrees(angles), data)

# COSINE FUNCTION
def func(theta, k, b, p):
    return b + k*np.cos(theta-(p))

# COSINE FIT
popt, pcov = optimize.curve_fit(func, angles, data)

# COSINE COMPUTATION
yn = func(angles, popt[0], popt[1], popt[2])
plt.plot(np.degrees(angles), yn, color='r', linestyle='--')
print np.degrees(popt[2])
在上面的例子中,我创建了一个相位偏移为176度的余弦函数。当我解相位偏移时,我得到-4。我知道你可以在(180-4)之前达到这一点,但我不理解潜在的行为。例如,如果偏移设置为等于190,则输出将为10。因此,我不知道(在不目视检查曲线的情况下)拟合是在区间[0,pi]还是[pi,2pi]上


任何建议都将不胜感激。

更新您的三角知识。你不应该期望180