我正在尝试实施一个例程来拟合我的实验中的电泳数据。
目的是根据数据集中峰的面积,从电泳图中峰的相对面积推导出生物分子相互作用的动力学参数。
由于所有相关的微分方程都是已知的,并且方程组具有解析解,如下所述:
我开始在 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 中使用的原始数据,但如果没有几乎字面上提供几乎正确的起始值,我似乎仍然无法得到与他们一样好的拟合。
我没有足够的经验知道我可以调整什么来减少这个过程的反复试验。
像全局优化工具箱这样的东西对我有帮助吗?
欢迎任何提示...