Custom Fit Function using Predefined waves

Hello, 

So to preface my question, I have many spectra that are made up of mixtures of two different species with overlapping features. I have the spectra of each individual specie that I can sum together to recreate the mixture spectra if I apply the right mixture coefficients. Instead of doing this manually to find the mixture ratios, I wanted to write a fit function in Igor to fit each spectra and use the coefficients to find the ratio. 

I tried to use the custom fit function to write my own fit, but I find I can't seem to use the spectra waves of the two species in the fit function without error.

Example: f() = a*Sp1+b*Sp2
a=coeff of Sp1
b=coeff of Sp2
Sp1 = reference wave of species 1
Sp2 = reference wave of species 2

How could I go about remedying this?

Thanks!

This should do it:

Function FitMixture(w,x) : FitFunc
	Wave w
	Variable x

	//CurveFitDialog/ These comments were created by the Curve Fitting dialog. Altering them will
	//CurveFitDialog/ make the function less convenient to work with in the Curve Fitting dialog.
	//CurveFitDialog/ Equation:
	//CurveFitDialog/ WAVE sp1, sp2
	//CurveFitDialog/ 
	//CurveFitDialog/ f(x) = A*sp1(x) + B*sp2(x)
	//CurveFitDialog/ End of Equation
	//CurveFitDialog/ Independent Variables 1
	//CurveFitDialog/ x
	//CurveFitDialog/ Coefficients 2
	//CurveFitDialog/ w[0] = A
	//CurveFitDialog/ w[1] = B

	WAVE sp1, sp2
	
	Variable xx = x
	
	if (x < leftx(sp1))
		xx = sp1(leftx(sp1))
	elseif (x > pnt2x(sp1,numpnts(sp1)-1))
		xx = pnt2x(sp1,numpnts(sp1)-1)
	endif
		
	return w[0]*sp1(xx) + w[1]*sp2(xx)
End

Note that this function assumes that sp1 and sp2 have the X scaling set (if this is not familiar, execute this command in Igor: DisplayHelpTopic "The Waveform Model of Data").

It handles the case where the fit X range is outside the range of sp1 and sp2 by returning the value at one end or the other as appropriate. It *does* assume that sp1 and sp2 have the SAME X range.

It looks up interpolated values from sp1 and sp2 using X indexing.

Oh, and it assumes that the waves with your standard spectra are named literally "sp1" and "sp2".