何が悪かったのか?
2 つの数値セットがありx
、y
両方のセットに同じ数の要素があります。
次のように仮定
します。セット内のすべてのペアに対してf
そのような機能があること。
b. セット内のポイントが順序付けられていること: つまり、thenの曲線をたどると、 「前に来る」.f( x_i ) = y_i
x_i,y_i
f(x)
x_i
x_{i+1}
これらの仮定は、あなたが持っている「正しいフィット」の例にも当てはまります。それらは、「不適切な適合」の例ではもはや有効ではありません。
自分でわかるように、上の入力コンターは として表すことができませんy = f(x)
。これは、の対応する値x
が2 つ存在する可能性があるためです (数学関数y
の定義を参照してください)。得られた近似は、与えられたペアを与えることができる数学関数に最も近いものです (赤い曲線は、それぞれが 1 つの値しか持たないという特性を持っています)。y = f(x)
x,y
x
y
あなたは何ができますか?
ほとんどの場合、2D 曲線を当てはめようとするとき、パラメトリック曲線を検索します。つまり、曲線に沿った各点をいくつかのt
として表すことができるような補助パラメータを導入します。
さて、仮定bが成り立つ場合(そしてあなたの例を見ると、そうであるかどうかはわかりません)、あなたができることは[x(t), y(t)]
0<=t<=1
t = linspace( 0, 1, numel(x) ); % define the parameter t
fitX = fit( t, x, 'cubicinterp'); % fit x as a function of parameter t
fitY = fit( t, y, 'cubicinterp'); % fit y as a function of parameter t
plot( fitX, fitY, 'r-' ); % plot the parametric curve