The program generates a 2D Gaussian. The program then attempts to fit the data using the MatLab function “lsqcurvefit “ to find the position, orientation and width of the two-dimensional Gaussian.
Execute “mainD2GaussFitRot.m” with not input parameters.
The two-dimensional Gaussian function is defined by the function “D2GaussFunctionRot.m” and “D2GaussFunction.m”
Hello! I'm really interested in using this code, but am having trouble using it. I've posted a question on MATLAB Answers if anyone is willing to help. Thanks! https://www.mathworks.com/matlabcentral/answers/386720-fit-2d-gaussian-function
Thank you for this code.
Thank you for the code. What are the errors associated with the the fitting parameters?
Good work . I would glad to know how the code work
Great work Gero! I also would like to know how the code might be adapted for 3D system...
Could you please provide the code with dependencies (as lsqncommon, lsqcurvefit, ...)
I would like to know the x(6) in the script of D2GaussFunctionRot function. I know it means the angle(in rad), however, I don't understand what the angle exactly based on?
Jan Simon's criticism is misplaced, only minor changes are needed to plot real data. If you have a regular grid of points, all you must do is:
change line 29 to the appropriate initial guesses
change line 30 to xs=x0;
change line 31 to noise=0;
change line 38 to [X,Y] = meshgrid(x,y);
where x and y a vectors with your x an y axis points
change line 47 to Z = zdata;
where zdata is a length(x) by length(y) matrix with the data you wish to fit such that zdata(i,j)=z(x_i,y_j).
Line 48 should be commented out.
If your grid points are not regular, you must set up the X, Y, and Z matrices so that they are all the same size and element i of X, Y and Z all correspond to the point (X(i),Y(i),Z(i)). There might be additional restrictions on the size and shape (I think it must be a matrix and not an array), but I'm not certain.
At any rate, thank you very much Gero. This is very helpful. :)
What a pity that this is a script, which generates the data by a random function. Before it can be used for real problems, substantial changes are required.
It would increase the usability, if the calculations are move to a function and separated from the generation of test data.
Works well for 2D system...any chance of broadening it to 3D?
file was renamed and the definition of the gaussian width was changed.
Inspired: Fit 1D and 2D gaussian to noisy data
Win cash prizes and have your live script featured on our websiteLearn more
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.