0

カーブフィッティングを行う単純な関数を作成しようとしています。フィッティングにはこれを使っています

data = importdata('in.dat');
X = data(:,1);
Y = data(:,2);
err = data(:,3);
disp(size(X))
disp(size(Y))
F = @(x,xdata)x(1)+x(2);
x0 = [8,2];
stuff=lsqcurvefit(F,x0,X,Y);


fout = fopen('out.dat','w');
fprintf('kappa = ',x(1));
fprintf('alpha = ',y(2));
fclose(fout);
exit

しかし、私はエラーが発生します

lsqcurvefit(F,x0,X,Y)
lsqcurvefit の使用エラー (248 行目)
関数値と YDATA のサイズが等しくありません。

このエラーは、 と が同じサイズではないXかのように見えます。Yただし、このサンプルデータでは

X =

         0
    0.6931
    1.3863
Y =
   -5.2546
   -6.6642
   -8.0545

念のため、サイズを確認してみました。

>> size(X)
size(X)

ans =

     3     1

>> size(Y)
size(Y)

ans =

     3     1

それで、私は何を間違っていますか?

4

1 に答える 1

3

関数は、 のサイズ(またはのスコープと呼ばれる)Fのベクトルが期待されるスカラーを返します。YxdataF

たとえば、実際の例は次のようになります。

F = @(x,xdata) x(1) * xdata; 
于 2013-09-09T07:51:31.470 に答える