2013-06-01 164 views
0

好日子,非线性模型拟合

我有下面的代码在Matlab:

ds1 = 

    2.0709 -3.0379 
    3.1447 -1.4320 
    4.0650 -2.5355 

modelfun = @(b,w)(b(1)*10.^w+b(2)); 

beta0 = [1 1]; 

mdl = NonLinearModel.fit(ds1,modelfun,beta0); 

我想创建一个NonLinearModel拟合方程:Y =β(1)* 10^(w)+ beta(2),但是我最终会出现以下错误:

使用NonLinearModel.fit时出错(第837行) 必须提供模型定义和模型系数的初始值。

任何想法?

回答

1

这是模型的一个要求吗?我不确定这是我的第一选择。

从绘制数据开始。 (没有太多,是吗?)一个简单的二阶多项式将是一个精确的拟合,因为你有三个点。

y = c0 + c1*x + c2*x^2 

或者可能通过取得双方的基准10日志进行转换对你更好。

这里不需要非线性模型。但是,如果你确实需要一个,非线性解决方案需要一个起点是常识。他们试图以迭代的方式迈向真正的解决方案,如果有的话。

There 可能不是一个解决方案,或者您可能选择一个不好的起点,或者步长可能太小而无法及时完成,或者太大而无法跨越您想要的答案。

所有这些都是使非线性问题比线性问题困难得多的原因。

+0

谢谢,我已经改变了我的数据和p = polyfit(w1,y1,1);现在工作正常! – Pietair