MatLab中的nlinfit收到了意想不到的结果

时间:2017-06-10 00:50:10

标签: matlab regression non-linear-regression

我遇到的测验首先给了我一个Logistic模型:

并要求我对其进行线性化,然后根据它给出的数据评估ak的值(在此主题中L被视为3000)。我完成了这个,但在第二个主题中遇到了麻烦,该主题要求我在第一个主题中评估ak的值进行非线性回归。这是我的代码:

function y = func(const, t)
  y = const(1)./(1 + const(2)*exp(-const(3)*t));
end

t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
y = [43.65,   109.86,   187.21,  312.67,   496.58,  707.65 ,  ... 
     960.25,  1238.75,  1560,    1824.29,  2199,    2438.89,  2737.71];

yAss = log ((3000 ./ y) - 1);
p    = polyfit (t, yAss, 1);
a    = exp (1) ^ (p(2)); 
k    = -p(1);

beta0 = [3000, a, k];
beta  = nlinfit (t, yAss, @func, beta0);

yAfter   = beta(1) ./ (1 + beta(2) * exp (-beta(3) * t));
yCompare = 3000 ./ (1 + a * exp (-k * t));

scatter (t, y); hold on;
plot (t, yAfter, 'r');
plot (t, yCompare);

它给了什么:

红色曲线是使用nlinfit返回的值生成的,任何人都可以告诉我出了什么问题?

1 个答案:

答案 0 :(得分:0)

我感到愚蠢......回答我自己的问题,问题本身也是愚蠢的......

beta  = nlinfit (t, y, @func, beta0);

应该是:

carTrackHandeling()

我真的想删除这个问题......