# Automation of Baseline Subtraction and Smoothing for Multiple Waves Hi there,

I'm working on a procedure that will allow me to do a baseline subtraction followed by a smoothing of the baseline corrected waves. I have completed the first part by using a "wrapper function" but am unsure how to appropriately add the Smooth portion to it.

Here is the procedure I have so far:

#pragma rtGlobals=3     // Use modern global access method and strict wave access.

Function BaselineSubtraction(w1,leftmark, rightmark,rangetype)

WAVE w1
VARIABLE leftmark, rightmark, rangetype

String outputName= NameOfWave(w1) +"_baselined"

if (rangetype<1470 || rangetype>1472)
return -1
endif

Duplicate/o w1 \$outputName
Wave output = \$outputName

if (rangetype==0)
WaveStats/Q output
endif

if (rangetype==1470)
WaveStats/Q/R=[leftmark,rightmark] output
endif

if (rangetype==1472)
WaveStats/Q/R=(leftmark,rightmark) output
endif

output= output - V_min
print V_min
End

FUNCTION SubtractAll(wname, fnum, leftmark, rightmark, rangetype)

STRING wname
VARIABLE fnum, leftmark, rightmark, rangetype
VARIABLE i
STRING w1

for(i=1; i<=fnum; i=i+1)
w1 = wname+num2str(i)

BaselineSubtraction(\$(w1),leftmark, rightmark,rangetype)

endfor

End

Let me know if you have any ideas/suggestions.

Thanks!
You just need to add the smooth step in the line after the bg subtraction.

//...
output -= V_min  // This is better than output = output - V_min
Smooth 1, output  // I don't know what smoothing you want to do
print V_min
End

If you want to keep the "bg subtracted but not smoothed" wave you need to duplicate output and then smooth that wave, otherwise this will work.