Macro Mbf(root) String root Silent 1 String avename = root+"_ave" String basename = root+"_base" String corname = root+"_cor" String bxname = root+"_bx" String byname = root+"_by" Duplicate /O $avename $basename,$corname $basename=x Make /O /N=20 $bxname,$byname Edit $bxname,$byname Display $corname EndMacro Macro Sbf(root) String root Silent 1 String avename = root+"_ave" String basename = root+"_base" String corname = root+"_cor" String bxname = root+"_bx" String byname = root+"_by" Variable pp=0 Variable pend=numpnts($bxname) do $byname[pp]=MakeBy(pp,$bxname,$avename) pp+=1 while (pp pbeg) multfac = mul($refname,$curname) $curname *= multfac Print /S curname,refname Print /D multfac endif $avename = sum_two(p,$avename,$curname) pp+= 1 while (pp < pend) $avename = div(p,$avename,pnum) pp = pbeg do pps = num2str(pp) curname = root+pps $avename = comp(p,$avename,$curname,pnum) pp+= 1 while (pp < pend) EndMacro Function sum_two(pp,w1,w2) Wave w1,w2 Variable pp w1[pp] += w2[pp] return (w1[pp]) End Function mul(w1,w2) Wave w1,w2 Variable /D multfac = 0 Variable pp=20 Variable pbegin Variable pend=512 pbegin=pp do multfac += w1[pp]/w2[pp] pp += 1 while (pp < pend) multfac /= (pend - pbegin) return (multfac) End Function comp(pp,w1,w2,pnum) Wave w1,w2 Variable pp,pnum if((w2[pp] - w1[pp]) > 12) w1[pp] *= pnum w1[pp] -= w2[pp] w1[pp] /= (pnum - 1) endif return (w1[pp]) End Function div(pp,w1,pnum) Wave w1 Variable pp,pnum w1[pp] /= pnum return (w1[pp]) End Macro FindPeaks(root,threshold) String root Variable threshold Silent 1 String pixelname = root+"_pixels" String peakname = root+"_peaks" Make /O /N=20 $pixelname Make /O /N=20 $peakname Edit $pixelname,$peakname Variable ii=0 Variable pp=0 Variable pend=numpnts($root) do pp += 1 if(($root[pp] > $root[pp-1])*($root[pp] > $root[pp+1])*($root[pp] > threshold)) $pixelname[ii] = pp ii += 1 endif while ( pp < pend ) DeletePoints ii,20-ii,$pixelname,$peakname EndMacro Function rms(pp,pend,w1) Wave w1 Variable pp,pend Variable pbegin Variable /D aw=0 Variable /D rms=0 pbegin=pp do aw += w1[pp] pp += 1 while (pp < pend) aw /= (pend - pbegin) pp=pbegin do rms += (w1[pp]-aw)^2 pp+=1 while (pp < pend) rms = sqrt(rms) rms /= (pend - pbegin) return(rms) End