たとえば、私はこのような5つのポイントを持っています、
(1,1) (2,-1) (3,2) (4,-2) (5,2)
今、
- 1)Matlabでこれらのポイントを補間する関数が必要です。
- 2)この関数をプロットしたい。
- 3)入力から数値を読み取り、出力にF(x)を書き込みます。
これどうやってするの??
たとえば、私はこのような5つのポイントを持っています、
(1,1) (2,-1) (3,2) (4,-2) (5,2)
今、
これどうやってするの??
与えられたデータポイントに多項式を当てはめるには、を使用できますpolyfit(x,y,n)
。ここで、は、の点を持つベクトル、はyの点を持つベクトル、は多項式の次数です。Mathworkspolyfitドキュメントの例を参照してくださいx
x
y
n
あなたの場合:
x=[1,2,3,4,5];
y=[1,-1,-2,-2,2];
n=3;
p = polyfit(x,y,n)
そして、例から取ったプロット
f = polyval(p,x);
plot(x,y,'o',x,f,'-')
または、(上記のプロットの代わりに)多項式のよりきれいなプロットを作成するには
xx=0:0.1:5;
yy = erf(xx);
f = polyval(p,xx);
plot(x,y,'o',xx,f,'-')
適切なフィットがどのようなものかわからず、別のフィットを試してみたい場合は、カーブフィッティングツールボックスを使用してくださいcftool
。x
とy
座標を使用して2つのベクトルを作成する必要があります。その後、を使用して遊ぶことができますcftool
。
別のオプションはinterp1
、補間に関数を使用することです。詳細については、 matlabのドキュメントを参照してください。
多項式補間が必要な場合は、polyfit
関数を見てください。これは通常、最小二乗多項式近似に使用されますが、次数+1をフィッティングするポイントの数と同じにするように選択した場合でも、引き続き機能します。ご存知かもしれませんが、内挿の場合、内挿の次数は-1の点の数に等しくなります。したがって、上記の例のポイントでは、次数4の多項式が必要です。mathworksのドキュメントへのリンクは次のとおりです
http://www.mathworks.co.uk/help/matlab/ref/polyfit.html
ポイントをそれぞれのx座標とy座標の2つのベクトルに分割すると、次のベクトルb
で補間多項式係数を簡単に取得できます。
b = polyfit(x,y,4)
上記のデータに基づくと、xベクトルとyベクトルは次のようになります。
x = [1 2 3 4 5];
y = [1 -1 2 -2 2]