signal = lorz2d(p, x, y, {signal}) : 2D Lorenztian function iFunc/lorz2d 2D Lorenztian function (fit 2D function/model) x0=p(2); y0=p(3); sx=p(4); sy=p(5); theta=p(6) [given in deg] a = cos(theta)^2/2/sx/sx + sin(theta)^2/2/sy/sy; b =-sin(2*theta)/4/sx/sx + sin(2*theta)/4/sy/sy; c = sin(theta)^2/2/sx/sx + cos(theta)^2/2/sy/sy; signal = p(1) ./ (1+ (a*(x-x0).^2+2*b*(x-x0).*(y-y0)+c*(y-y0).^2) ) + p(7); This expression assumes that the Amplitudes are independent from the Widths. lorz2d([w1 w2]) creates a model with specified widths lorz2d([ parameters ]) creates a model with specified model parameters Reference: http://en.wikipedia.org/wiki/Lorentzian_function input: p: lorz2d model parameters (double) p = [ 'Amplitude' 'Centre_X' 'Center_Y' 'HalfWidth_X' 'HalfWidth_Y' 'Angle' 'Background' ] the rotation angle is given in degrees. or 'guess' x: axis along rows (double) y: axis along columns (double) signal: when values are given, a guess of the parameters is performed (double) output: signal: model value ex: signal=lorz2d([1 2 .5 .2 .3 30 .2], -2:.1:2, -3:.1:3); or plot(lorz2d) Version: Aug. 22, 2017 See also iData, iFunc/fits, iFunc/plot, lorz (c) E.Farhi, ILL. License: EUPL.