Fit And Graph a List of XY Pairs

Average rating
(0 votes)

#pragma rtGlobals=1		// Use modern global access method.
 
//	Example:
//		Make/O/N=5 xWave0=p, yWave0=gnoise(1)
//		Make/O/N=5 xWave1=p, yWave1=gnoise(1)
//		String xWaveList = "xWave0;xWave1;"
//		String yWaveList = "yWave0;yWave1;"
//		FitAndGraphAllXYPairs(xWaveList, yWaveList)
 
Function FitAndGraphXYPair(xWave, yWave)
	Wave xWave
	Wave yWave
 
	Display yWave vs xWave
	ModifyGraph mode=3,marker=19,rgb=(0,0,65535)		// Round blue markers
	DoUpdate
 
	CurveFit /TBOX=256 line yWave /X=xWave /D
 
	String textboxName = "CF_" + NameOfWave(yWave)
	String text
 
	// Append Rab - the correlation between the intercept (a) and the slope (b)
	sprintf text, "V_Rab = %g", V_Rab
	AppendText /N=$textboxName text
 
	return 0					// Signifies success.
End
 
Function FitAndGraphAllXYPairs(xWaveList, yWaveList)
	String xWaveList			// Semicolon-separated list
	String yWaveList			// Semicolon-separated list
 
	String graphName
	Variable index, numXYPairs
 
	numXYPairs = ItemsInList(xWaveList)
	if (numXYPairs != ItemsInList(yWaveList))
		DoAlert 0, "The number of X waves must equal the number of Y waves."
		return -1
	endif
 
	for(index=0; index<numXYPairs; index+=1)
		String xWaveName = StringFromList(index, xWaveList)
		Wave xWave = $xWaveName
		String yWaveName = StringFromList(index, yWaveList)
		Wave yWave = $yWaveName
 
		FitAndGraphXYPair(xWave, yWave)
	endfor
 
	return 0
End

Back to top