当使用lsqcurvefit时,MATLAB抛出YDATA大小错误X和Y具有相同的大小

时间:2013-09-09 07:01:32

标签: matlab curve-fitting

我正在尝试制作一个简单的函数,为我做一些曲线拟合。我用它来拟合

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大小不相等。

此错误会向我显示,好像XY的大小不同。但是,关于此示例数据

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

那么,我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的函数F会返回一个标量,其中预期大小为Y(或xdata的向量,称为F的范围)的向量。

一个工作的例子就是:

F = @(x,xdata) x(1) * xdata;