How can I fit a Gaussian to data that only forms the peak

35 ビュー (過去 30 日間)
Tristan Bras
Tristan Bras 2019 年 9 月 18 日
コメント済み: Tristan Bras 2019 年 9 月 18 日
I have some measurement data that shows a dip in the middle.
I'm trying to fit a Gaussian to that dip to characterize the width and height.
Right now I'm cutting my data down to the dip and trying to fit a gaussian with the following code:
gauss = 'a.*exp(-((x-b)./c).^2)+d';
f = fit(cutV,data,gauss);
coeffs = coeffvalues(f);
FWHM = coeffs(3)*2*sqrt(2*log(2));
height = coeffs(1);
While this does fit a Gaussian, it does so very poorly.
Instead of fitting the peak of the gaussian to the curve I have, it tries to fit the whole Gaussian function to the tiny dip I have.
How do I make the fit function only fit the peak of the Gaussian to my data?


Johannes Fischer
Johannes Fischer 2019 年 9 月 18 日
You should always help your fitting algorithm by setting upper and lower bounds for the parameters. Even more important are starting values for your parameters. Otherwise, your algorithm cant optimize the fits, if the initial guess is too far from the data. Have a look at the documentation for fit ( on how to do that. Additionaly, your data values are quite small (10^-6), that means that your parameters (e.g. a) are also very small. Usually a fitting algorithm stops, if the changes to the parameters calculated in one iteration is below a certain threshold (DiffMinChange). In that case you either need to adjust your thresholds or adjust your data before fitting (e.g. multiplying by 10^6) and then correctly interpret the resulting parameters (FWHM should not be affected, but height needs to be multiplied by 10^-6 again).
  1 件のコメント
Tristan Bras
Tristan Bras 2019 年 9 月 18 日
Thank you! Scaling the data first did the trick.


その他の回答 (0 件)


Help Center および File ExchangeLinear and Nonlinear Regression についてさらに検索





Community Treasure Hunt

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

Start Hunting!

Translated by