【发布时间】:2012-01-05 10:00:10
【问题描述】:
我有一个函数,三个指数之和:
F = f1*exp1 + f2*exp2 + f3*exp3
完全正确:
F=1-((1-f(2)-f(3)).*(exp(-abs(data)./a(1)))+((1-f(1)-f(3)).*(exp(-abs(data)./a(2))))+((1-f(1)-f(2)).*(exp(-abs(data)./a(3)))));
其中 f1, f2, f3 是一个分数,每个 exp 有一个参数,称为 a1, a2 和 a3。
因此,将此函数拟合到实验数据会给出六个参数(f1、f2、f3、a1、a2、a3)。
注意,那个
a1 > a2 > a3
和
f1 + f2 + f3 = 1
拟合完成了几个时间延迟(称为 t1、t2、t3....)。因此,对于每个时间延迟,都有一组六个参数。
参数 a1、a2 和 a3 以线性方式随时间延迟增加(a1(t1)
我需要的是 a1(t)、a2(t)、a3(t) 和分数的斜率。 问题是,当我为每个时滞拟合函数时,我经常遇到 a1 和 a2 很好地上升(完美的线性拟合)但 a3 下降的情况。 我也有分数的问题 - 我不能取每个分数的平均值,因为当我添加 f1(t) + f2(t) + f3(t) 时,它永远不会等于 1。
是否有任何(简单的)方法可以“一次”安装所有内容?怎么做? 谢谢!
【问题讨论】:
-
你用什么来拟合参数?函数
fmincon允许您指定等式和不等式约束,您可以使用它们来确保a1 > a2 > a3和f1 + f2 + f3 = 1始终。
标签: matlab curve-fitting data-fitting model-fitting