Which Gaussian fitting tool should I use?

I used a gaussian fitting function that generated this result. Surely this graph can look more gaussian rather than parabolic?
I also tried using fit() from the curve fitting toolbox which gave me a straight line. What could be going wrong?
Here is the data:
% x
Columns 1 through 8
-16 -15 -14 -13 -12 -11 -10 -9
Columns 9 through 16
-8 -7 -6 -5 -4 -3 -2 -1
Columns 17 through 24
0 1 2 3 4 5 6 7
Columns 25 through 32
8 9 10 11 12 13 14 15
% y
Columns 1 through 8
79 85 87 84 77 92 84 88
Columns 9 through 16
93 88 90 98 99 133 164 183
Columns 17 through 24
180 134 107 92 86 85 85 79
Columns 25 through 32
94 85 90 82 93 83 102 8

4 Comments

You have not shown what you actually did, only some apparently screwy results. You have not provided the actual data you started with, only what may be a picture of it. Is there a way to offer good help? It looks like you tried to fit a quadratic polynomial to the data in the first figure. Of course that would produce crap. Would you expect otherwise? Such a quadratic polynomial could not possibly look any different.
So slow down. State what you actually need to do. Provide some data, not just pictures of data. Tell us what model you want to use.
If you append some data, then do so, attached to a comment on your question, or by editing your question, not as an answer.
I edited my question with the data and the tool I used. @John D'Errico
@Asser Abdelgawad You have provided the data, but in a form that is not easily retrieved or copy-pasted. Ideally, you would attach the x,y data in a .mat file.
Hello, I answered my own question by using the fit() function from the Curve Fitting Toolbox. Thanks for your investment @Matt J and @John D'Errico.

Sign in to comment.

 Accepted Answer

Researcher
Researcher on 1 Jun 2022
Edited: Researcher on 9 Jan 2025
Use the fit() function from the curve fitting toolbox:
f = fit(x,y,'gauss1')
y = f(x)

1 Comment

Why gauss2, rahter than gauss1? Your plots show only a single lobe.

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 1 Jun 2022
Edited: Image Analyst on 1 Jun 2022
Why are you trying to fit a Gaussian to the Line Spread Function? LSFs are commonly sinc functions - yours even looks like one. Seems like you should use fminsearch to find the best fit sinc function.

3 Comments

Is this also true if my goal is to ultimately generate a gaussian Point Spread Function in the end? I'm simply following this script here (which uses a Gaussian fit) to find the MTF, then I am generating the PSF by taking the ifft of the 2D MTF (which I find by rotating the 1D MTF about its vertical axis).
Besides the sinc vs. gaussian issue, is this logic sound for finding the PSF?
You're not getting the PSF. I don't see any code for that.

Sign in to comment.

Categories

Products

Release

R2021b

Asked:

on 31 May 2022

Edited:

on 9 Jan 2025

Community Treasure Hunt

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

Start Hunting!