0

Python を使用して曲線を一連の点に合わせようとしています。ポイントは大体こんな感じ。

ここに画像の説明を入力

np.polyfit青色の曲線は入力されたデータ (この場合は 4 ポイント) を示し、緑色は と を使用した曲線適合を示しpolyfit1dます。私が本質的に望んでいるのは、青い線に非常に似ているが、ポイント 1 と 2 でグラデーションがより滑らかに変化するカーブ フィットです (つまり、線がこれらのポイントを通過する必要はありません)。

これを行う最良の方法は何ですか?ラインはアークタンジェントのように見えますが、アークタンジェント フィットを指定する方法はありますか?

これはちょっとくだらない質問だと思いますが、これ以上ポイントを指定せずに逃げたいと思います。どんな助けでも大歓迎です。

4

1 に答える 1

1

多項式 をフィッティングするのではなく、ポイント間の補間を行っているようです

ただし、どちらの場合でも、開始するためのコード スニペットを次に示します。

import numpy as np
import scipy as sp
from scipy.interpolate import interp1d

x = np.array([0,5,10,15,20,30,40,50])
y = np.array([0,0,0,12,40,40,40,40])

coeffs = np.polyfit(x, y, deg=4)#you can change degree as you see fit
poly = np.poly1d(coeffs)
yp = np.polyval(poly, x)

interpLength = 10
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)


plt.plot(x, y, '.', x, yp, '-', new_x,new_y, '--')
plt.show()
于 2013-10-29T12:52:55.497 に答える