2017-03-01 5 views
0

からポイントを取得し、私はMatlabのアマチュアは、そう私と一緒に負担してくださいよ -MatLabのフィットオブジェクトプロット

は、私は現在、MATLABは2次元データへの複雑な方程式を合わせて使用​​します。今私はf = fit(xdata, ydata, function, options)を使ってフィットオブジェクトを生成するプログラムを持っています。

confint(f)f.parameterなどを使用して係数と信頼区間を取得し、plot(f,x,y)を使用してデータとフィットのプロットを作成することができます。

プロットされたポイントを取得する方法を知っている唯一の方法は、ブラシ(?)ツールを使用してすべての行を選択し、データをクリップボードにコピーしてExcelまたは一部に貼り付けることですそのようなこと。私はむしろMatlabから、おそらくアレイにそれらのポイントを直接得るだろうが、私はどのように考えていない。

MatLabのベテランは、私が望むものがあれば教えてもらえますか?私の方程式の複雑さのために、自分自身でこれらの点をプロットするのは非常に難しいでしょうが、必要であれば私はそうします(これは30分ほどかかることがあります。

答えて

0

あなたが任意のコードやデータを共有していないので、私はMATLABのドキュメントからの例を使用します。

load franke 
f = fit([x, y],z,'poly23'); 
plot(f,[x,y],z) 

あなたが縫うことができますように、それは最初x,y,zベクターを含むデータセットをロードします。次に、 'poly23'を使用してサーフェスをデータにフィットさせます。あなたのケースでは、それはベクトルと機能の異なるセットであることができ、まだあなたがf機能を得ると言ったように。

今、私たちは、それはあなたの関数の形と係数を示した機能f

>> f 

    Linear model Poly23: 
    f(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y 
        + p12*x*y^2 + p03*y^3 
    Coefficients (with 95% confidence bounds): 
     p00 =  1.118 (0.9149, 1.321) 
     p10 = -0.0002941 (-0.000502, -8.623e-05) 
     p01 =  1.533 (0.7032, 2.364) 
     p20 = -1.966e-08 (-7.084e-08, 3.152e-08) 
     p11 = 0.0003427 (-0.0001009, 0.0007863) 
     p02 =  -6.951 (-8.421, -5.481) 
     p21 = 9.563e-08 (6.276e-09, 1.85e-07) 
     p12 = -0.0004401 (-0.0007082, -0.0001721) 
     p03 =  4.999 (4.082, 5.917) 

enter image description here

を見てみることができます。次のようにあなたがそれを使用することができます。

zz = f(x,y); 

を再度データをプロットできることを確認するには:

figure; 
scatter3(x,y,zz,'.k'); 
hold on 
scatter3(x,y,z,'.'); 

enter image description here

0

あなたがf = fit(xdata, ydata, function, options)を呼び出すと、機能名前は方程式を決定します。 list of official equationsを参照してください。

データポイントを繰り返し処理し、対応する多項式を使用して結果を計算するだけです。だからあなたの場合には言うことができます場合機能=ポリ2次のように計算を行うことになります

私は MATLABのFigure上のオブジェクトを反復処理し、プロットする別の複雑なJavaコードが存在することができる理解
#Fit your data 
f = fit([xdata, ydata],'poly2'); 

#Print name of coefficients (Just for Verification) 
coeffnames(f) 

#Fetch values of coefficients like p1, p2, ... 
p = coeffvalues(c) 

#Compute output points from min(xdata) to max(xdata) spaced at deltaX 
deltaX = 0.1; 
x = [min(xdata):deltaX:max(xdata)]; 
Y = p(1)*x^2+p(2)*x+p(3);   #This is equation for function 

その方程式を使うことは迅速で有効な方法です。