找到具有多个项的高斯的最大值 - matlab

时间:2015-04-29 07:54:21

标签: matlab curve-fitting gaussian data-fitting

我有一个数据集(x,y),其中我使用三个术语(gauss3)拟合高斯:

[gaussianFit,gof]=fit(x,y,'gauss3');

现在,我想找到这个函数的最大值。我知道对于gauss1,最大值只是b1参数,但我不知道如何找到最大值,当它是多个高斯的总和时。这些术语似乎是加权的(否则,我的想法只是三个b - 术语的平均值)。我的第二个想法是用所有参数解决整个差异化函数:

syms x
diff(a1.*exp(-((x-b1)./c1).^2) + a2.*exp(-((x-b2)./c2).^2) + a3.*exp(-((x-b3)./c3).^2)==0);
solve(dEqn,x)

...但这给了我一些非常奇怪的参数值,这些值不是原始值。而且我觉得这对简单的事情来说只是一个麻烦的解决方案。

我希望有人可以帮助我,因为我没有想法。

1 个答案:

答案 0 :(得分:0)

从拟合参数重建分布可能最简单,但您不需要使用符号数学。

您可以使用eval生成重建曲线,然后找到正常的最大值:

a = 3; b = 4; x = 1:10;
recon = eval('a*x + b');
[mx, mI] = max(recon);

您可以从返回的拟合对象中将表达式作为字符串获取,或使用规范形式。