Fit And Graph a List of XY Pairs
hrodstein
#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
// 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
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More