2014-03-28 27 views
1

我使用IPython Notebook應用程序。因爲我在天體物理學碩士論文半年之後。這是我第一次在這裏問一個問題,但很多時候我都從堆棧溢出中受益。所以,我已經搜索了互聯網和堆棧溢出數據庫,但沒有找到解決我的問題。Python多個2D多項式適合

我有一個數據點的曲線圖,當它改變它的傾斜度時,它們形成一個帶有兩個'斷點'的曲線。現在,我想根據曲線中的斷點將至少兩個一階擬合繪製到該圖中。

我已經知道如何擬合一階多項式,但不知道如何定義擬合範圍。我的意思是我想告訴Python使一個適合數據點的範圍[0,15]和一個適用於[15,30]中的數據點。

我的代碼如下所示:

如上所述,這
plt.subplot(1,2,1) 

scatter(res1_c18o[:,4], res1_c18o[:,3], c= res1_c18o[:,2], s=10) 

plt.colorbar() 

x= res1_c18o[:,4] 

y=res1_c18o[:,3] 

p = np.polyfit(x,y, 1) 

pl.plot(x,p[0]*x+p[1]) 

像建立一個適合整個曲線。這是我需要爲我的碩士論文做的最後一件事。這些實際上是最後一章的最後一塊;)

請與我分享您的想法,我將不勝感激任何幫助!

非常感謝你, 貝蒂

回答

0

第一選擇你適合的範圍,在[0,15]x

import numpy as np 
xrange = x[np.logical_and(x>=0,x<=15)] 
yrange = y[np.logical_and(x>=0,x<=15)] 

p = np.polyfit(xrange,yrange, 1) 

#plot the fit only in its range of validity: 
plt.plot(xrange,p[0]*xrange+p[1]) 

您可以對第二個範圍執行相同操作。

+0

您好! 感謝您的快速回答。如果我嘗試這個,我得到了錯誤消息logical_and未定義。正如我所看到的,它必須包含在我已經導入的numpy中。你有小費如何解決這個問題? 在此先感謝, 貝蒂 – user3473105

+0

使用'np.logical_and',我會更新答案 – gg349

+0

非常感謝,這完全出色! – user3473105