0

我正在尝试解决余弦函数的相位偏移。我正在寻找 [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 ]。

任何建议表示赞赏。

4

1 回答 1

2

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

于 2013-10-10T16:50:25.447 回答