User defined equation does not show up in batch curve fitting window

Tika
Posts: 44
Joined: 2015-11-12
Location: Nepal

Hi,
I need to do batch curve fitting on the 2D wave. I went through the example experiment, the procedure file in it, and also the forum post. Based on these, I tried writing two codes on the procedure file that would fit my data points; however the user defined equation does not appear on the batch curve fit window. I would appreciate any suggestion or comments on this. Here is my code.

#pragma rtGlobals=3		// Use modern global access method and strict wave access.
#include <WMBatchCurveFitIM>
 
Function FitMySpectrum(ww, xx) : FitFunc	//code for the fitting of spectrum
 
	WAVE ww    
	Variable xx
	Variable w1=0, w2=0, w3=0, w4=0, w5=0, w6=0, qq=0
	Variable T1=0.23, S1=0.064, T2=0.09, S2=0.12, x1=1.92, x2=2.17
 
	     // local variable
 
 
	//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/ qq(xx) =  (A1*(exp(0.5*(S1/T1)^2-(xx-x1)/T1))*erfc(0.707*(S1/T1-(xx-x1)/S1)))+(A2*exp(0.5*(S1/T1)^2-(xx-x2)/T2)*erfc(0.707*(S2/T2)-(xx-x2)/S2))
	//CurveFitDialog/ End of Equation
	//CurveFitDialog/ Independent Variables 1
	//CurveFitDialog/ xx
	//CurveFitDialog/ S1 --> Set equal to 0.064
	//CurveFitDialog/ T1 --> Set equal to 0.23
	//CurveFitDialog/ S2 --> Set equal to 0.12
	//CurveFitDialog/ T2 --> Set equal to 0.09
	//CurveFitDialog/ x1 --> Set equal to 1.92
	//CurveFitDialog/ x2 --> Set equal to 2.17
	//CurveFitDialog/ Coefficients 2
	//CurveFitDialog/ ww[0] = A1
	//CurveFitDialog/ ww[1] = A2
 
	return (ww[0]*(exp(0.5*(S1/T1)^2-(xx-x1)/T1))*erfc(0.707*(S1/T1-(xx-x1)/S1)))+(ww[1]*exp(0.5*(S1/T1)^2-(xx-x2)/T2)*erfc(0.707*(S2/T2)-(xx-x2)/S2))
 
End
 
//Second code
<igor>
 
Function FitMySpectrum(ww, xx) : FitFunc	//code for the fitting of spectrum
 
	WAVE ww    
	Variable xx
	Variable w1=0, w2=0, w3=0, w4=0, w5=0, w6=0, qq=0
	Variable T1=0.23, S1=0.064, T2=0.09, S2=0.12, x1=1.92, x2=2.17
 
	 //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/ qq(xx) =  (A1*(exp(0.5*(S1/T1)^2-(xx-x1)/T1))*erfc(0.707*(S1/T1-(xx-x1)/S1)))+(A2*exp(0.5*(S1/T1)^2-(xx-x2)/T2)*erfc(0.707*(S2/T2)-(xx-x2)/S2))
	//CurveFitDialog/ End of Equation
	//CurveFitDialog/ Independent Variables 1
	//CurveFitDialog/ xx
	//CurveFitDialog/ S1 
	//CurveFitDialog/ T1 
	//CurveFitDialog/ S2
	//CurveFitDialog/ T2
	//CurveFitDialog/ x1
	//CurveFitDialog/ x2
	//CurveFitDialog/ Coefficients 2
	//CurveFitDialog/ ww[0] = A1
	//CurveFitDialog/ ww[1] = A2
 
 
	// Body code
	w1 = exp(0.5*(S1/T1)^2-(xx-x1)/T1)   
	w2 = erfc(0.707*(S1/T1-(xx-x1)/S1))
	w3 = ww[0]
	w4 = exp(0.5*(S2/T2)^2-(xx-x2)/T2)   
	w5 = erfc(0.707*(S2/T2-(xx-x2)/S2))
	w6 = ww[1] 
	qq = w3*(w1*w2)+w6*(w4*w5)
	return qq
 
End

TRK


[ last edited December 2, 2017 - 22:08 ]
wings
Posts: 62
Joined: 2016-04-27
Location: China

Remove the comment following FitFunc and make sure there is really nothing (including blank spaces) left after the WORD FitFunc

I examine the procedure file for batch curve fitting and find that it may be due to the following code:

returnStruct.isFitFunc = stringmatch(aLine, "*:*FitFunc") 

in

Function GetCurveFitFuncInfo(FunctionName, returnStruct)


[ last edited December 3, 2017 - 03:24 ]
Tika
Posts: 44
Joined: 2015-11-12
Location: Nepal

wings wrote:
Remove the comment following FitFunc and make sure there is really nothing (including blank spaces) left after the WORD FitFunc

I examine the procedure file for batch curve fitting and find that it may be due to the following code:

returnStruct.isFitFunc = stringmatch(aLine, "*:*FitFunc") 

in

Function GetCurveFitFuncInfo(FunctionName, returnStruct)

Thank you Wings. It works well after clearing the comments


Back to top