3

fitコマンドラインを使用してMatlabで曲線を近似しようとしています。入力データは次のとおりです。

X =

     1
     2
     4
     5
     8
     9
    10
    13

Y =

1.0e-04 *

    0.1994
    0.0733
    0.0255
    0.0169
    0.0077
    0.0051
    0.0042
    0.0027

そして、ターゲット機能は

Y = 1/(kappa*X.^a)

私は、、を使用しfittypefitoptionsfitます。

model1 = fittype('1/(kappa*x.^pow)');
opt1 = fitoptions(model1);
opt1.StartPoint = [1e-5 -2];
[fit1,gof1] = fit(X,Y.^-1,model1,opt1)

およそ-450の結果が得られますがrsquare、これは漠然と測定と同じ方向です。これを示すために図を添付しました。Matlabのフィッティングスキルを向上させるにはどうすればよいですか?

編集

.^-1fitコマンドでinを削除しました。これにより動作が改善されましたが、完全には正しくありません。model1を次のように設定した場合:

model1 = fittype('1/(kappa*x.^pow)');

フィット感が悪いです。次のように設定した場合:

model1 = fittype('kappa*x.^pow');

フィット感は良好です(カッパは非常に少数で、パウは負です)。

私も正規化Yし、妥当な結果が得られました

4

1 に答える 1

6

交換する必要があります

[fit1,gof1] = fit(X,Y.^-1,model1,opt1)

[fit1,gof1] = fit(X,Y,model1,opt1)

また、 の初期条件kappaはであり、分子に が含まれて1e-5いれば意味があります。kappa

モデルkappa*x.^powを初期条件[1e-5 -2]で使用すると、適切な適合が得られます。

X =[1     2     4     5     8     9    10    13]';
Y = 1.0e-04 * [0.1994 0.0733 0.0255 0.0169 0.0077 0.0051 0.0042  0.0027]';

model1 = fittype('kappa*x.^pow');
opt1 = fitoptions(model1);
opt1.StartPoint = [1e-5 -2];
[fit1,gof1] = fit(X,Y,model1,opt1)
plot(fit1, X, Y)

当てはめた結果は

>> fit1
fit1 = 
   General model:
   fit1(x) = kappa*x.^pow
   Coefficients (with 95% confidence bounds):
     kappa =   2.044e-05  (1.931e-05, 2.158e-05)
     pow =      -1.657  (-1.851, -1.464)

適合曲線

于 2012-01-09T03:18:00.720 に答える