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 commentaires

John D'Errico
John D'Errico le 31 Mai 2022
Modifié(e) : John D'Errico le 31 Mai 2022
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.
Researcher
Researcher le 1 Juin 2022
Modifié(e) : Researcher le 1 Juin 2022
I edited my question with the data and the tool I used. @John D'Errico
Matt J
Matt J le 1 Juin 2022
@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.
Researcher
Researcher le 1 Juin 2022
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.

Connectez-vous pour commenter.

 Réponse acceptée

Researcher
Researcher le 1 Juin 2022
Modifié(e) : Researcher le 9 Jan 2025

0 votes

Use the fit() function from the curve fitting toolbox:
f = fit(x,y,'gauss1')
y = f(x)

1 commentaire

Matt J
Matt J le 1 Juin 2022
Why gauss2, rahter than gauss1? Your plots show only a single lobe.

Connectez-vous pour commenter.

Plus de réponses (2)

Image Analyst
Image Analyst le 1 Juin 2022
Modifié(e) : Image Analyst le 1 Juin 2022

0 votes

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 commentaires

Researcher
Researcher le 1 Juin 2022
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?
Image Analyst
Image Analyst le 1 Juin 2022
You're not getting the PSF. I don't see any code for that.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Centre d'aide et File Exchange

Produits

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by