# Local max/min of Mathematica data sets.

• Mathematica

## Main Question or Discussion Point

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.

Related MATLAB, Maple, Mathematica, LaTeX 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[#[]&,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.