我有一個簡單的調查數據在現場採用未經校準的指南針。意識到這個問題,在這個領域,軸承被用來比較一個好的指南針與未校準的指南針以及11個軸承中記錄的差異。該圖顯示了與sin函數非常接近的差異。 我希望對這個結果函數擬合一個多項式(3級),以使用未校準的羅盤校正測量數據。我的曲線擬合程序產生的擬合曲線很差。任何人都可以看到什麼是錯的?Scipy Bodgy曲線擬合
import numpy as np
import scipy
import pylab
correctCompass=\
np.array([134.4,112.6,069.7,051.1,352.5,314.6,218.3,258.2,237.8,186.5,153.7])
errorCompass=\
np.array([131.6,108.9,065.6,047.0,349.8,314.0,284.6,262.7,243.4,189.8,153.2])
# sort compass values
for i in range(0,11):
for j in range(i+1,11):
if correctCompass[i] > correctCompass[j]:
tmp=correctCompass[j]
correctCompass[j]=correctCompass[i]
correctCompass[i]=tmp
tmp=errorCompass[j]
errorCompass[j]=errorCompass[i]
errorCompass[i]=tmp
diff = correctCompass - errorCompass + 15.0
height=diff.max() + 16.0
polycoeffs = scipy.polyfit(correctCompass, diff, 3)
# fit the data with a polynomial
yfit = scipy.polyval(polycoeffs,correctCompass)
pylab.plot(correctCompass, diff, 'k.')
pylab.plot(correctCompass, yfit, 'r-')
pylab.axis([0,360,-10.0,height])
pylab.show()
pylab包含numpy,所以導入這兩個是多餘的。我建議'輸入matplotlib.pyplot plt'和numpy –