0
我想解決餘弦函數的相位偏移問題。我正在尋找[0,2 * pi]之間的值。用scipy優化求解餘弦函數的偏移參數問題curve_fit
爲了探究這種使用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 ]。
任何意見表示讚賞。