Matlab 非线性模型拟合

Matlab 非线性模型拟合,matlab,Matlab,你好 我在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); 我试图创建一个符合方程的非线性模型:y=beta(1)*10^(w)+beta(2),但最终出现以下错误: 使用非线

你好

我在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);
我试图创建一个符合方程的非线性模型:y=beta(1)*10^(w)+beta(2),但最终出现以下错误:

使用非线性模型拟合时出错(第837行) 必须提供模型定义和模型系数的初始值


有什么想法吗?

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

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

y = c0 + c1*x + c2*x^2
或者,以双方的10为基数进行转换可能会更适合您

这里不需要非线性模型。但如果你真的需要一个,众所周知,非线性解决方案需要一个起点。他们试图以迭代的方式逐步找到真正的解决方案(如果有)

可能没有解决方案,或者您可能选择了一个不好的起点,或者步骤太小而无法及时完成,或者太大而直接跳过了您想要的答案


所有这些使得非线性问题比线性问题更难解决。

谢谢,我已经转换了我的数据,p=polyfit(w1,y1,1);现在一切正常!