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.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Local max/min of Mathematica data sets.
Loading...