Local max/min of Mathematica data sets.

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 6K views
wil3
Messages
177
Reaction score
1
Is there a way in Mathematica to find the local maxima of a set of points? I have a fairly fine data set, and I can clearly see several peaks in it that I would like to know the numerical value of (as in, the highest point- I don't need a spline approximation or anything too fancy like that). I have already smoothed the set, so I'd rather not fit polynomials if possible.

Additionally, is there a way to find the expected zeros of a set? Let's say that I have two points in order, and somewhere between them the measured response value drops to negative. I know I can find this manually, but there are enough zeroes that I would prefer not to. I am not too picky regarding whether the guessed zero is based on a linear connection between the two points or some sort of exotic polynomial or spline.

Thanks very much.
 
Physics news on Phys.org
Suppose you have
points={{xa,ya},{xb,yb},{xc,yc}...}

peakQ[{{x1_,y1_},{x2_,y2_},{x3_,y3_}}]:=Abs[y1]<Abs[y2]&&Abs[y2]>Abs[y3];
peaks=Map[#[[2]]&,Select[Partition[points,3,1],peakQ[#]&]]

Then

crossQ[{{x1_,y1_},{x2_,y2_}}]:=Sign[y1]!=Sign[y2];
zero[{{x1_,y1_},{x2_,y2_}}]:=x1+(x2-x1)*Abs[y1]/Abs[y2+y1];
zeros=Map[zero[#]&,Select[Partition[points,2,1],crossQ[#]&]]

Test these carefully on sample data to make certain I haven't made any mistakes.

Then study how and why these work so that you can use these methods yourself in the future.
 
Sorry about the delay in replying. That worked perfectly, like your suggestions always do. Thanks very much for your help.