# how to calculate the envelope curve of 4 different waves?

Dear all,

I'm trying to calculate the envelope curve for 4 different waves

Do you know how to do it?

Enclosed to this you will find the .pxp file

Thank you

Best regards

Here is a crude function that should do the job, taking into account the fact that your wave scaling is negative.

function env4(wave1,wave2,wave3,wave4,minX,maxX,numPoints)
Wave wave1,wave2,wave3,wave4
Variable minX,maxX,numPoints

Make/O/N=(numPoints) envWave
Make/O/FREE/N=(4)/WAVE wp={wave1,wave2,wave3,wave4}
Make/O/FREE/N=(4) startV,endV

SetScale/I x (minX),(maxX),"", envWave
Variable i,j,xx,dx,maxValue

for(j=0;j<4;j++)
startV[j]=DimOffset(wp[j],0)
endV[j]=DimOffset(wp[j],0)+DimDelta(wp[j],0)*(DimSize(wp[j],0)-1)
endfor

xx=minX
dx=DimDelta(envWave,0)
for(i=0;i<numPoints;i+=1)
maxValue=-1
for(j=0;j<4;j+=1)
wave w=wp[j]
if(xx>=min(startV[j],endV[j]) && xx<max(startV[j],endV[j]))
if(w(xx)>maxValue)
maxValue=w(xx)
endif
endif
endfor
envWave[i]=maxValue
xx+=dx
endfor
End

You can invoke this on the command line using:

`env4('Peak 00','Peak 10','Peak 20','Peak 30',8,-1,500)`

Edit:

If you are actually seeking the sum of all the waves then the code is even simpler:

function sum4Waves(wave1,wave2,wave3,wave4,minX,maxX,numPoints)
Wave wave1,wave2,wave3,wave4
Variable minX,maxX,numPoints

Make/O/N=(numPoints) sumWave=0
Make/O/FREE/N=(4)/WAVE wp={wave1,wave2,wave3,wave4}
Make/O/FREE/N=(4) startV,endV

SetScale/I x (minX),(maxX),"", sumWave
Variable i,j,xx,dx,maxValue

for(j=0;j<4;j++)
startV[j]=DimOffset(wp[j],0)
endV[j]=DimOffset(wp[j],0)+DimDelta(wp[j],0)*(DimSize(wp[j],0)-1)
endfor

xx=minX
dx=DimDelta(sumWave,0)
for(i=0;i<numPoints;i+=1)
maxValue=0
for(j=0;j<4;j+=1)
wave w=wp[j]
if(xx>=min(startV[j],endV[j]) && xx<max(startV[j],endV[j]))
maxValue+=w(xx)
endif
endfor
sumWave[i]=maxValue
xx+=dx
endfor
End

I hope this helps,

A.G.