# Find Areas of a Series of XY pairs

//  FindXYAreas(xList, yList, destWaveName)
//  Finds areas of a series of XY pairs.
//  xList is a semicolon-separated list of X wave names. If xList contains only one
//  wave name then that wave is used as the X wave for all XY pairs.
//  yList is a semicolon-separated list of Y wave names.
//
//  Example:
//      Make/O/N=6 xData=x, yData0=x, yData1=x+1, yData2=x+2
//      String yList = WaveList("yData*", ";", "")      // "yData0;yData1;yData2;"
//      FindXYAreas("xData;", yList, "xyAreas")
//      Edit xyAreas
Function FindXYAreas(xList, yList, destWaveName)
String xList                // Semicolon-separated list of x waves
String yList                // Semicolon-separated list of y waves
String destWaveName // Name for output wave. This wave is OVERWRITTEN.

Variable numXWaves = ItemsInList(xList)
Variable numYWaves = ItemsInList(yList)

Make/O/N=(numYWaves) \$destWaveName
Wave dest = \$destWaveName           // Make wave reference

Variable i
for(i=0; i<numYWaves; i+=1)
String xName
if (numXWaves == 1)
Wave xw = \$StringFromList(0, xList)     // Use the same X wave every time
else
Wave xw = \$StringFromList(i, xList)     // Use a different X wave every time
endif
String yName = StringFromList(i, yList)
Wave yw = \$yName
Variable result = areaXY(xw, yw)
dest[i] = result
endfor
End

Forum

Support

Gallery