【发布时间】:2021-11-10 14:53:05
【问题描述】:
我想使用自定义模型来拟合一些数据。我使用的语法是fit()。我使用的数学模型是这样的:
a*exp(-x*b)+c*exp(-y*d)+e*exp(-z*f)
a,b,c,d,e,f 是我将估计的参数,x,y,z 是自变量。 (实际的数学公式更复杂,但像这样非线性。)
如何在拟合曲线时添加a+c+e=1 的约束(并且a,c,e 必须为正或0)?我知道如何设置下限和上限,但不知道如何将此归一化系数约束添加到拟合中。使用fit()方法时可以这样做吗?
【问题讨论】:
-
你不能用
a*exp(-x*b)+c*exp(-y*d)+(1-a-c)*exp(-z*f)吗? -
在这种情况下 a+c 可能大于 1?
-
用
1-a-c代替e相当于限制a+c+e+1,就是这样 -
我刚刚编辑了这个问题,以明确 a c e 也应该是积极的。实际上 a c e 具有物理意义。所以 1-a-c 可能会导致负数?
-
@BigBO。请在您的问题中加入一个具有代表性的数据示例(数字,而不是图表)。
标签: matlab curve-fitting