6

我无法理解和应用nlinfitMatlab 中函数的使用。所以,假设我得到了向量

x = [1, 2, 3, 4, 5] 
y = [2.3, 2.1, 1.7, .95, .70] 

我被要求将这些数据拟合成指数形式(我不知道这些数字是否有效,我编造了它们)其中y = A*e^(Bx) + CA/B/C是常数)。

我的理解是,它nlinfit需要 4 个参数,两个向量,modelfunction在这种情况下应该是我上面的等式,然后beta0是 ,我根本不明白。我的问题是如何实现modelfunctionin nlinft,以及如何找到beta0(仅使用要绘制/拟合的 2 个向量时)以及应该如何实现?有人可以给我看一个例子,以便我可以将此功能应用到任何适合的地方吗?我怀疑我将来会经常使用它并且真的很想学习它。

4

2 回答 2

3

查看文档中的第二个示例:http: //www.mathworks.com/help/stats/nlinfit.html

基本上,您将函数句柄作为modelfunction参数传递。要么在文件中创建一个函数,然后将函数名与@前面的 a 一起传递给它,要么像这样创建一个匿名函数:

nlinfit(x, y, @(b,x)(b(1).*exp(b(2).*x) + b(3)), beta0)

您会注意到,在上面我将您的所有参数都放入了一个向量中。您的函数的第一个参数必须是您要解决的所有点的向量(即A,在您的情况下) BC第二个参数必须是x

正如 woodchips 所说,这是您的起点,因此您对,和参数beta0的最佳猜测(不必很好) 。所以类似or的东西,虽然它是非常具体的问题。你应该玩几个。请记住,这是一个局部搜索功能,因此可能会陷入局部最优,因此您的起点实际上可能非常重要。ABC[1 1 1]rand(3,1)

于 2013-09-17T07:43:05.313 回答
0

beta0 是您对参数的初始猜测。您的猜测越好,您就越有可能看到收敛到可行的解决方案。nlinfit 只不过是一种优化。它必须从某个地方开始。

于 2013-09-17T02:28:23.963 回答