【问题标题】:Find maximum of Gaussian with multiple terms - matlab查找具有多个项的高斯最大值 - matlab
【发布时间】:2015-07-08 08:59:39
【问题描述】:

我有一个数据集 (x,y),我用三个项拟合高斯 (gauss3):

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

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

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)

...但这给了我一些非常奇怪的参数值,它们不是原始值。而且我觉得这只是简单的事情的繁琐解决方案。

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

【问题讨论】:

    标签: matlab curve-fitting gaussian data-fitting


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多