Matlab的误差与nlinfit

问题描述:

我试图获得所述非线性最小二乘法拟合以下等式的:Matlab的误差与nlinfit

Y = 1 /(1 +α(LN(持续时间)^ B))

我想,以适应这的数据介绍如下,这是我尝试使用nlinfit函数来解决它......

x = [1.99000000000000;3.01000000000000;4.01000000000000;5.09000000000000;5.77000000000000;6.85000000000000;7.72000000000000;8.87000000000000;9.56000000000000;]; 
y = [1;1;0.800000000000000;0.730000000000000;0.470000000000000;0.230000000000000;0.270000000000000;0.100000000000000;0.100000000000000;]; 

plot(x,y,'o','linestyle','none'); 

p(1) = 1; 
p(2) = 1; 

fun = @(p,x) 1/(1 + p(1).*(log(x).^p(2))); 

myfit = nlinfit(x,y,fun,p); 

我的问题似乎与定义为nlinfit第四所需输入函数('p'i在上面的例子中)。该文档没有给出清楚的解释,这需要什么工作,并且我无法根据我收到的错误消息来解决问题:

???在128 MODELFUN处使用==> nlinfit时出错应返回一个与Y相同长度的拟合值向量。

错误==>拟合在14 myfit = nlinfit(x,y,fun,p);

我试着设置p repmat(1,9,1)和repmat(1,1,9),但这些似乎都不能解决我的问题。任何帮助将不胜感激!

我相信你忘了点做逐元素缺失的功能:

fun = @(p,x) 1 ./ (1 + p(1).*(log(x).^p(2))); 
      ^