Matlab非线性,多参数曲线拟合问题

时间:2012-09-25 16:51:28

标签: matlab curve-fitting least-squares

我正在尝试实施一个从我的实验中拟合电泳数据的程序。

目的是根据数据集中峰的面积,从电泳图中峰的相对区域推导出生物分子相互作用的动力学参数。

由于所有相关的微分方程都是已知的,并且由于方程组具有解析解,如下所述:

Analytical solution manuscript

我开始在matlab中输入相关的方程式(6,8,13,......来自参考手稿)。

这样创建的功能起作用,我可以用它来模拟相互作用物种的电泳图谱。

显然,我现在想使用该函数来拟合实验数据并检索参数(总共8个,Va,Vc,MUa,MUc,k,A0,C0,基线噪声)。

其中一些显然是相关的。示例值可能是(以了解它们的大小):

params0 = [ ...
           8.44E-02; ... % Va
           1.25E-01; ... % Vc
           5.32E-05; ... % MUa
           8.87E-05; ... % MUc
           4.48E-03; ... % k
           6.06E-01; ... % A0
           3.00E-00; ... % C0
           4.64E-03 ...  % noise
         ];

我的问题是,如果我提供实验数据并尝试类似lsqcurvefit:

[x,resnorm,residual] = lsqcurvefit(@(param,xdata) Electropherogram2(param,xdata,column), params0, time, ydata,lb, ub);

我经常得到非常差的结果,因为我要么用完迭代,要么打出一些(显然不合适)局部最小值或其他......

只有当我用起始值和允许的间隔(即因为我通过其他实验知道可能的值)修补很多时,我最终会得到或多或少的合适,但即便如此,拟合也不如报道的那么好在原稿中(图3)。

该手稿的作者使用了Excel解算器,并且非常友好地提供了图3中使用的原始数据,但是我似乎无法像他们的那样完美地拟合,而几乎没有提供几乎正确的起始值。 / p>

我没有足够的经验知道我可以调整什么来使这个过程减少反复试验。

像全局优化工具箱这样的东西可以帮助我吗?

欢迎任何提示......

1 个答案:

答案 0 :(得分:1)

在上面提到的论文(“分析解决方案手稿”)中,暗示自由优化参数是五(Va,Vc,MUa,MUc,k)而不是八,因为(Aeq / Ceq)比率可以从他们的代表方程式,eq。 8为Aeq和(显然)eq。 6为Ceq。

在我看来,更令人不安的是模型中出现以下产品,包括免费的优化参数:

  1. k和Va in eq。 12
  2. 在eq中的epsilon_A等式中的MUc和Va。 12
  3. 在等式中的epsilon_A等式中的MUa和Vc。 12
  4. 一般来说,当非线性优化算法在非线性模型中作为产品出现时,非线性优化算法在优化自由参数方面存在合理的麻烦。