Fit Normalised Gaussian to data

7 visualizaciones (últimos 30 días)
Dana Shoukroun
Dana Shoukroun el 27 de Abr. de 2021
Editada: Matt J el 28 de Abr. de 2021
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 comentarios
Alex Sha
Alex Sha el 28 de Abr. de 2021
Hi, post out your data please.
Matt J
Matt J el 28 de Abr. de 2021
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)

Iniciar sesión para comentar.

Respuestas (1)

Matt J
Matt J el 28 de Abr. de 2021
Editada: Matt J el 28 de Abr. de 2021
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

Categorías

Más información sobre Linear and Nonlinear Regression en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by