Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Local max/min of Mathematica data sets.

  1. Jul 7, 2011 #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.
     
  2. jcsd
  3. Jul 7, 2011 #2
    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.
     
  4. Jul 14, 2011 #3
    Sorry about the delay in replying. That worked perfectly, like your suggestions always do. Thanks very much for your help.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook




Loading...