File Exchange

image thumbnail

gaussfitn

version 1.1.1 (2.96 KB) by Matt J
Fit N-dimensional scattered points with Gaussian+constant

4 Downloads

Updated 22 Oct 2018

View License

This function uses lsqcurvefit to fit parameters D, A, mu, sig to the R^N-->R
Gaussian+constant model function,

z(x) = D + A*exp( -0.5 * (x-mu).' * inv(sig) *(x-mu) )

Here A and D are unknown scalars, mu is an unknown Nx1 mean vector, and sig is an
unknown NxN covariance matrix. By imposing lower and upper bounds 0<=D<=0 (see below), this can also be used to perform pure Gaussian fitting.

SYNTAX:

[params,resnorm, residual,exitflag,output] = gaussfitn(xdata,zdata,params0,LB,UB,Name,Value)

INPUTS (required):

xdata: MxN matrix whose rows specify M scattered samples in R^N

zdata: Mx1 vector of corresponding samples z(xdata)

INPUTS (optional)

params0: Cell array of initial parameter estimates {D0,A0,mu0,sig0}.
Can also be empty [] in which case default initial guesses
are autogenerated. Can also consist of cell array of empty
and non-empty elements like {D0,[],mu0,[]} in which case
default initial guesses are generated for select parameters.

LB: Cell array of lower bounds {D_LB, A_LB, mu_LB} on D, A, and mu.

UB: Cell array of upper bounds {D_UB, A_UB, mu_UB} on D, A, and mu.

Name,Value: Name/Value option pairs compatible with lsqcurvefit. See,
<https://www.mathworks.com/help/optim/ug/lsqcurvefit.html#buuhcjo-options>.
By default, however, SpecifyConstraintGradient=true unless
over-ridden.


OUTPUTS:

A: Final estimate of the parameters as a cell array {D,A,mu,sig}
resnorm: As in lsqcurvefit
residual: As in lsqcurvefit
exitflag: As in lsqcurvefit
output: As in lsqcurvefit

Cite As

Matt J (2020). gaussfitn (https://www.mathworks.com/matlabcentral/fileexchange/69116-gaussfitn), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (0)

Updates

1.1.1

Small fix to the improved mu0/sig0 estimation method

1.1.0

Improved initial guesses of mu0 and sig0.

1.0.2

No change

1.0.1

Description modification

MATLAB Release Compatibility
Created with R2018a
Compatible with R2016b to any release
Platform Compatibility
Windows macOS Linux