Fit Gaussian to randomly distributed points

4 views (last 30 days)
Daniel Goldfarb
Daniel Goldfarb on 26 May 2015
Commented: Greig on 28 May 2015
I'm trying to recreate the signal produced by a microscope by randomly distributing x number of points(with a given intensity value) on a matrix of a size equal to the resolution(512). I then want to fit a gaussian on to each point to see at what density value of points do I lose the ability to resolve the peaks.
Regarding the code, I'm able to randomly allocate the points and set a peak intensity:
a=1 b=resolution
for i=1:number_of_points x=ceil(((b-a).*rand(i,1)+a)); y=ceil(((b-a).*rand(i,1)+a)); A(x,y)=100;
but I'm unable to fit gaussian to each one of those peaks. How would I take a single value in a matrix and fit a point spread function which caries over the entire matrix, until point density equals a value in which no peaks are resolvable

Answers (1)

Greig
Greig on 26 May 2015
If I understand your question properly, I think imgaussfilt might be what you are looking for, but you will need to make some decision about the sigma value for the Gaussian. Also, I think it only does isotropic filtering (i.e., sigma is the same in all directions).
  2 Comments
Daniel Goldfarb
Daniel Goldfarb on 26 May 2015
Thanks for the quick response Greig. Unfortunately imgaussfilt didn't work for a double input argument.
Greig
Greig on 28 May 2015
I don't actually have Image Processing Toolbox, which is needed for imgaussfilt, so I cannot play around with it, but it should be able to handles this. It reads in an image matrix, which is 2D. In your case I think you want to use it like:
B = imgaussfilt([x,y], sigma);

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!