Gaussian mixture curve fitting

How does one curve fit a 2 dimensional gaussian mixture to data? I know that the function 'gmdistribution.fit' models the data as a multidimensional gaussian mixture, but I want to do curve fitting instead. I tried using the 'nlinfit.m' function by writing my own model function but I run into errors because I cannot constrain the co variance matrix to be positive semi definite.

2 个评论

Do you mean one-dimensional data ("x") that is fit by the sum of two component gaussians in that dimension, or do you mean two-dimensional data ("x" & "y") fit by one (or more?) gaussian(s) in each dimension?
Nagaraj
Nagaraj 2015-3-10
编辑:Nagaraj 2015-3-10
My data is a 2D matrix with the indices representing the x and y variables and the matrix values representing the height of the surface. I need to "surface fit" 2D gaussian mixtures(upto 6 mixtures) to this data. Any suggestions? The inbuilt parametric modeling function http://www.mathworks.com/help/curvefit/parametric-fitting.html gives the option for fitting gaussian mixtures curves(1D case). Is there something similar in the 2D case to fit surfaces?

请先登录,再进行评论。

回答(2 个)

the cyclist
the cyclist 2015-3-10

0 个投票

I don't have any experience doing this in MATLAB, but it sounds to me like the fit function in the Curve Fitting Toolbox is exactly what you need.
That page shows a simple example of fitting a surface. Your case would be a bit more complicated, because you want to fit a custom function, but it seems that this is possible.
Edgar
Edgar 2018-11-20

0 个投票

Hello there,
I have a curve which I want to fit using a mixture of two gaussians. As in the original question, I have checked fitgmdist but that expects the data, rather than curve fitting.
Is there a way to fit a mixture of gaussians to a curve? I do not have the curve fitting toolbox.
Any ideas?
Thanks!

2 个评论

This wors fine as long as the curves do not overlaps

请先登录,再进行评论。

提问:

2014-11-10

Community Treasure Hunt

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

Start Hunting!

Translated by