我有一个已知模型,我正在尝试拟合真实数据。
fun = @(b,x) b(1)*x(:,1)./(x(:,2).^b(2));
beta0 = [70 1.1]; % expected range is 40-130, and 1.0-1.3
[beta,r]=nlinfit(X,tmp_y,fun,beta0);
当我使用 nlinfit 时,它告诉我我的函数正在返回 Inf 的值。我进入代码并发现在拟合的第二次迭代中,它过度补偿了第二个 beta 项,将其降至 -80。如果 的值非常大x(:,2)
,这会导致 的所有值都被零除x
。
我可以设置哪些选项来防止这种情况发生?我已阅读文档,但我不太了解所有选项的实际作用。