function err = fitM(lam,yobsd,Spectra,InstFun,StrayLight) % Fitting function for broadened absorption of any number of components % yobsd = observed transmission spectrum (column vector) % Sprecta = reference spectra for each component, one component/column % InstFunction = Instrument function or slit function. (column vector) % StrayLight = fractional stray light (scalar or column vector) % Example: % options = optimset('TolX',0.000001); % absorbance=FMINSEARCH('fitM',1,options,[.0123 .0102 .0123 .0147],[.5 1 .5 .2],[1 .5 .0625 .5],.01) % yobsd, Spectra, and InstFunction must have same number of rows (wavelengths) % T. C. O'Haver, August 2006 global z global c A = StrayLight + (10 .^ -(Spectra*lam')); fy=fft(A); fa=fft(InstFun); fy1=fy.*fa; z=real(ifft(fy1))./sum(InstFun); c = z\yobsd; q = z*c; err = norm(q-yobsd);