nlinfit尺寸误差

时间:2016-01-11 05:51:07

标签: matlab non-linear-regression

我在matlab中使用Nonlinearfit工具。 我一直收到以下错误:

  

使用nlinfit时出错(第210行)   MODELFUN必须是一个函数,它返回与Y(1乘100)大小相同的拟合值向量。您提供的模型函数返回的结果是1乘2。   大小不匹配的一个常见原因是在函数中使用矩阵运算符(,/,^)而不是相应的元素运算符(。,。/,。^)。

我发现这个question与我的非常相似,但我仍然得到同样的错误。我在控制台上尝试计算 myfun ,同时使用矢量作为输入,这样可以输出正确的维度。如果任何人都可以指出错误,那将会有很多帮助。

% Defining the function
myfun = @(t,b)exp(t.*b(1)+b(2));
[y_a] = arrayfun(myfun,x_a);
% Using nonlinear least square minimization
beta0 = [1 1];
nlinfit(x,y,myfun, beta0)

提前致谢...:)

编辑:发现这是有效的。     g = fittype('exp(k*x + a)');     [fit1,gof,fitinfo] = fit(x',y',g,'StartPoint',[1 1]);

1 个答案:

答案 0 :(得分:0)

nlinfit中使用的函数将参数向量作为其第一个参数,然后是独立数据向量。你想要,

myfun = @(b,t)exp(t.*b(1)+b(2));

请注意,您也可以在此实例中使用*而不是.*