2016-04-24 89 views
0

我在下面找到一些示例數據,我正試圖做兩個曲線擬合。首先是基於正弦和餘弦之和的擬合,我可以使用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

FRO m我所見過的,當必須同時計算幅度和相位時,OLS無法處理正弦擬合的總和。有沒有人在這裏用過類似的配合?

回答

0

這些系列是密切相關的:

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

所以,已經計算a_kb_k可以A_kphi_k 使用上述轉換輕鬆搞定。

+0

我現在很尷尬張貼,因爲我不認爲它是一個簡單的數學問題,我可能以前做過很多次。謝謝! – DJV

+0

沒問題。樂意效勞! – taras