我正在尝试制作一个简单的函数,为我做一些曲线拟合。我用它来拟合
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
那么,我做错了什么?
答案 0 :(得分:3)
您的函数F
会返回一个标量,其中预期大小为Y
(或xdata
的向量,称为F
的范围)的向量。
一个工作的例子就是:
F = @(x,xdata) x(1) * xdata;