Fit Normalised Gaussian to data

Hi,
I am trying to fit a nromalised Gaussian to my data, using
f(x) = a/sqrt(2pi*sigma^2) * exp (-(x-mu)^2/sigma^2)
However the fit function in matla does not accound for the sigma coefficient. Is there a way to modify the equation of the fit function? I tried to do a manual fit but it doesn't seem to work.
Thanks

2 件のコメント

Alex Sha
Alex Sha 2021 年 4 月 28 日
Hi, post out your data please.
Matt J
Matt J 2021 年 4 月 28 日
I am trying to fit a nromalised Gaussian to my data, using
Shouldn't it be,
f(x) = a/sqrt(2pi*sigma^2) * exp (-0.5*(x-mu)^2/sigma^2)

サインインしてコメントする。

回答 (1 件)

Matt J
Matt J 2021 年 4 月 28 日
編集済み: Matt J 2021 年 4 月 28 日

0 投票

You can use,
Example:
%% Synthetic data
fn=@(x,a,mu,sigma) a./sqrt(2*pi*sigma^2) .* exp (-(x(:)-mu).^2/2/sigma^2);
xdata=linspace(-3,9,20).';
ydata=fn(xdata,1,3,2)+0.006*randn(size(xdata));
%% Do the fit
ulb={0,[],[],[]};
[params,resnorm, residual,exitflag,output]=gaussfitn(xdata,ydata,[],ulb,ulb);
Local minimum possible. lsqcurvefit stopped because the final change in the sum of squares relative to its initial value is less than the value of the function tolerance.
[A,mu,variance]=deal(params{2:4});
sigma=sqrt(variance);
a=A*sqrt(2*pi*variance);
%% Verify
xs=linspace(min(xdata),max(xdata),1000);
plot(xdata,ydata,'o',xs, fn(xs,a,mu,sigma));shg

カテゴリ

ヘルプ センター および File ExchangeLinear and Nonlinear Regression についてさらに検索

タグ

質問済み:

2021 年 4 月 27 日

編集済み:

2021 年 4 月 28 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by