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返回一个标量,其中预期大小为Y(或xdata称为范围)的向量。F

例如,一个工作示例是:

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