2017-02-24 11 views
0

を描くようにフィット関数からサンプリングする方法を、私は以下の方法を使用して、データに合わせてnp.polyfit機能を使用しようとしていた。データをフィットして、2つの配列xとyが与えられた曲線

z = np.polyfit(x, y, 20) 
f = np.poly1d(z) 

しかし、私は滑らかな曲線の代わりに折れ線グラフをプロットしたいので、私はこの関数fを使って線をプロットする配列をサンプリングします。

x_new = np.linspace(x[0], x[-1], fitting_size) 
y_new = np.zeros(fitting_size) 
for t in range(fitting_size): 
    y_new[t] = f(x_new[t]) 

plt.plot(x_new, y_new, marker='v', ms=1) 

問題は、上記のセグメントコードスティルが私に滑らかな曲線を与えることです。どうすれば修正できますか?ありがとう。

答えて

2

残念ながら、質問の背後にある意図は少し不明です。ただし、リニアフィットを実行する場合は、deg=1polyfitの度合いを指定する必要があります。フィッティングからサンプリングする理由はありません。単純に同じ入力配列を使用してフィッティング関数を適用することができます。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(-1,5,20) 
y = 3*x**2+np.random.rand(len(x))*10 

z = np.polyfit(x, y, 1) 
f = np.poly1d(z) 

z2 = np.polyfit(x, y, 2) 
f2 = np.poly1d(z2) 


plt.plot(x,y, marker=".", ls="", c="k", label="data") 
plt.plot(x, f(x), label="linear fit") 
plt.plot(x, f2(x), label="quadratic fit") 
plt.legend() 
plt.show() 

enter image description here

+0

あなたの誠実な支援をいただき、ありがとうございます。 – ytutow

関連する問題