2013-10-10 77 views
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 ]。

任何意見表示讚賞。

回答

2

刷新你的觸發知識。你不應該指望180.