2016-04-28 135 views
0

我试图拟合呈指数递减的数据。如果我使用cftools来拟合单项指数函数,那我就很合适。然而,当我尝试使用fit功能:指数拟合和cftools在Matlab中给出不同的结果

f = fit(x, y, 'exp1'); 

它给了我下面的错误:

Warning: NaN, Inf, or complex value detected in startpoint; 
choosing random starting point instead. 
> In curvefit.attention.Warning/throw (line 30) 
    In fit>iFit (line 299) 
    In fit (line 108) 

和系数它给最终会被垃圾。

我以为cftools正在运行fit。为什么有差异?我如何从脚本运行cftools

+2

没有数据可能很难猜测。您*可以*查看“File> Generate Code”下的'cftool'使用的代码。看起来有一个区别可能是'cftool'为你选择了初始值。您可以使用'fitoptions(model)'检查拟合模型的选项。 – alexforrence

回答

3

为什么不只是做错误建议?

f = fit(x, y, 'exp1', 'StartPoint', rand); 

你可能想改变rand是一个更明智的第一个猜测,但将完全取决于你的问题域。

否则cftools应该有一个code generation功能,该功能可以打印出MATLAB代码,该代码复制与工具交互操作的任何内容,以便将来以编程方式运行它。这是一个开始的好方法。

+0

即使我设置了起始点,我基本上也会得到'f(x)= 0'。我将研究'cftools'的代码生成功能。谢谢。 – sodiumnitrate