我有一个数据集(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)
...但这给了我一些非常奇怪的参数值,这些值不是原始值。而且我觉得这对简单的事情来说只是一个麻烦的解决方案。
我希望有人可以帮助我,因为我没有想法。
答案 0 :(得分:0)
从拟合参数重建分布可能最简单,但您不需要使用符号数学。
您可以使用eval
生成重建曲线,然后找到正常的最大值:
a = 3; b = 4; x = 1:10;
recon = eval('a*x + b');
[mx, mI] = max(recon);
您可以从返回的拟合对象中将表达式作为字符串获取,或使用规范形式。