我在理解和应用nlinfitMatlab中的函数时遇到了麻烦.所以,让我说我给了矢量
x = [1, 2, 3, 4, 5]
y = [2.3, 2.1, 1.7, .95, .70]
Run Code Online (Sandbox Code Playgroud)
并且我被要求将这些数据拟合成指数形式(我不知道这些数字是否可行,我将它们编成)其中y = A*e^(Bx) + C(A/B/C是常数).
我的理解是nlinfit需要4个参数,两个向量,modelfunction在这种情况下应该是我上面的等式,然后beta0,我根本不理解.我的问题是你如何实现modelfunctionin nlinft,以及你如何找到beta0(当只使用2个矢量你想要绘制/拟合时)以及如何实现它?有人可以给我一个例子,以便我可以适用于任何合适的功能吗?我怀疑将来我会经常使用它,并且真的想学习它.
查看文档中的第二个示例:http://www.mathworks.com/help/stats/nlinfit.html
基本上,您传递一个函数句柄作为modelfunction参数。@要么在文件中创建一个函数,然后将前面带有 的函数名称传递给它,要么创建一个匿名函数,如下所示:
nlinfit(x, y, @(b,x)(b(1).*exp(b(2).*x) + b(3)), beta0)
Run Code Online (Sandbox Code Playgroud)
您会注意到,在上面我已将所有参数放入一个向量中。函数的第一个参数必须是您尝试求解的所有点的向量(即A,B在C您的情况下),第二个参数必须是x。
正如木片所说,这是您的起点,因此您对和参数beta0的最佳猜测(不一定很好)。所以像or 之类的东西,但它是非常具体的问题。你应该多玩几个。请记住,这是一个局部搜索函数,因此可能会陷入局部最优,因此您的起点实际上非常重要。ABC[1 1 1]rand(3,1)